如何在NodeJS + Express应用程序中上传文件后清除request.files?

时间:2013-06-03 11:18:07

标签: node.js express

我正在使用NodeJS + Express。我提交了一个表单,其中包含一个用于创建帐户的文件。如果我想更新该帐户,并且不想更新图像。这是我的代码:

uploadAndSave: function (image, cb) {
    if (!image) return this.save(cb)
    var self = this
    uploader.upload({'large': 300, 'small':150}, image,function(fileName){
    self.logo.filename = fileName;
    self.logo.cdnUri = 'https://myapp.s3.amazonaws.com/';
    self.save(cb);
});

在我的控制器中:

exports.update = function(req, res){
    var account = req.account
    account = _.extend(account, req.body)
    account.uploadAndSave(req.files.image, function(err) {
    if (err) {
      res.render('accounts/edit', {
        title: 'Edit Account',
        account: account,
        errors: err.errors
      })
    }
    else {
      res.redirect('/accounts/' + account._id)
    }
  })
}

req.files.image总是有一些价值。我想,在第一次上传文件后,此变量已设置,并且永远不会删除。我该如何删除它?

1 个答案:

答案 0 :(得分:0)

  

此属性是上传文件的对象。此功能由bodyParser()中间件提供,但其他正文解析中间件也可遵循此约定。使用bodyParser()时,此属性默认为{}。

来源:http://expressjs.com/api.html#req.files

因为它始终是一个对象!image将始终返回true。要检查对象是否为空,您可以使用以下techniques

我更喜欢Object.keys(obj).length === 0,尽管这只适用于'现代'浏览器。