1

我正在使用 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 总是有一些价值。我想,在第一次文件上传后,这个变量被设置了,并且永远不会被删除。我怎样才能删除它?

4

1 回答 1

0

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

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

因为它总是一个对象,所以!image总是返回 true。要检查对象是否为空,您可以使用以下技术

我更喜欢Object.keys(obj).length === 0虽然这只适用于“现代”浏览器。

于 2013-06-03T13:29:36.447 回答