【发布时间】:2017-09-20 20:15:39
【问题描述】:
我正在使用“multer”插件进行文件上传。我想在文件上传成功后调用另一个函数。
这是我的代码:
module.exports.uploadFile = upload.single('file', '_id'), function (req, res, next) {
console.log('Uploade Successful');
}
var upload = multer({
storage: multer.diskStorage({
destination: './Media/ChatDocUpload',
filename: function (req, file, cb) {
var dest = './Media/ChatDocUpload';
//query string params
var _chatMessageID = req.query.chatMessageID;
var _ext = file.originalname.substring(file.originalname.indexOf("."));
var _fileName = _chatMessageID + _ext;
cb(null, _fileName);
}
})
});
我想在图片上传后调用我的新函数。使用此代码我可以成功上传图片,但无法获取调用回调函数。
图片上传完成后我需要调用新函数。
//I need to call this function after image fully uploaded
var uploadSuccessFn = function () {
//code
}
【问题讨论】:
-
你可以使用multer作为中间件函数:router.post('/image',imageUpload,anotherFunction)
-
你不应该解析文件名,有一个模块:
path有许多内置函数,例如:path.extname(nodejs.org/api/path.html#path_path_extname_path)。然后,出于安全原因,您应该阻止某些文件扩展名...首先,所有可执行文件名:.exe、.scr等。 -
但是我需要在图片上传成功后调用'var uploadSuccessFn = function () { //code }'这个函数。
-
您可以使用 next() 函数并将控件发送到 anotherFunction()。