我正在使用sails.js作为后端,使用bluebird promise。我尝试使用req.file.upload上传文件,回调方式可以正常工作并成功上传文件:
req.file('file').upload({
maxBytes: 2000000,
dirname: 'uploadFolder'
}, function (err, files) {
if (err) {
return res.serverError(err);
}
return res.ok();
}
但是 Promise 的方式不是这样的:
var Promise = require('bluebird');
var fileUploader = Promise.promisify(req.file('file').upload);
fileUploader({
maxBytes: 2000000,
dirname: currentUploadFolder
}).then(function(files) {
console.log(files);
return Promise.resolve(files);
}).catch(function(err) {
console.log(err);
return Promise.reject(err);
});
上传文件失败,控制台一直报错:
data: app.js:1800 - [TypeError: Cannot read property 'length' of undefined]
任何想法请告诉我?
upstream.upload = Promise.promisify(upstream.upload)
,其中upstream是对req.file('file')
的引用,因此您将在上游环境中调用upload函数,请告诉我它是否有效。我现在无法测试,所以我不想立即创建答案。 - Lu Roman