我正在使用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总是有一些价值。我想,在第一次上传文件后,此变量已设置,并且永远不会删除。我该如何删除它?
答案 0 :(得分:0)
此属性是上传文件的对象。此功能由bodyParser()中间件提供,但其他正文解析中间件也可遵循此约定。使用bodyParser()时,此属性默认为{}。
来源:http://expressjs.com/api.html#req.files
因为它始终是一个对象!image
将始终返回true。要检查对象是否为空,您可以使用以下techniques。
我更喜欢Object.keys(obj).length === 0
,尽管这只适用于'现代'浏览器。