我正在使用multer将文件保存在通过express& amp;的NodeJS。
我按照代码使用。
var express = require('express'),
multer = require('multer')
var app = express()
app.get('/', function(req, res){
res.send('hello world');
});
app.post('/upload',[ multer({ dest: './uploads/'}), function(req, res){
res.status(204).end()
}]);
app.listen(3000);
Multer将文件保存在指定的目标文件夹中。
这一切都运转正常,但我有以下问题:
答案 0 :(得分:4)
您可以使用onError
选项处理错误:
app.post('/upload',[
multer({
dest : './uploads/',
onError : function(err, next) {
console.log('error', err);
next(err);
}
}),
function(req, res) {
res.status(204).end();
}
]);
如果您致电next(err)
,您的路线处理程序(生成204)将被跳过,错误将由Express处理。
我认为(不是100%肯定,因为它取决于 multer
的实现方式)在保存文件时将调用您的路由处理程序。上传完成后,您可以使用onFileUploadComplete
来记录消息,并将其与您的路由处理程序进行比较。
查看代码,multer
在文件完全上传后调用下一个中间件/路由处理程序。
答案 1 :(得分:1)
试试这个
var upload = multer().single('avatar')
app.post('/profile', function (req, res) {
upload(req, res, function (err) {
if (err) {
// An error occurred when uploading
return
}
// Everything went fine
})
}
参考:
http://wiki.workassis.com/nodejs-express-get-post-multipart-request-handling-example/
答案 2 :(得分:1)
这是编写处理上传和错误的multer中间件的方法
const multer = require("multer");
function uploadFile(req, res, next) {
const upload = multer().single('yourFileNameHere');
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
} else if (err) {
// An unknown error occurred when uploading.
}
// Everything went fine.
next()
})
}
答案 3 :(得分:0)
从下面的代码(来自muter index.js文件的源代码)可以看出,如果你没有传递 onError 回调,那么错误将由express处理。
fileStream.on('error', function(error) {
// trigger "file error" event
if (options.onError) { options.onError(error, next); }
else next(error);
});
答案 4 :(得分:0)
当用户向您发送任何内容时,请小心系统
我通常设置更多[* option1]:
process.on('uncaughtException', function(ls){
// console.log(ls);
(function(){})();
});
然后:
var upload= multer({ dest: __dirname + '/../uploads/' }).single('photos');
// middle ..
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
console.log('MulterError', err);
} else if (err) {
// An unknown error occurred when uploading.
// Work best when have [*option1]
console.log('UnhandledError', err);
}
if(err) {
return res.sendStatus(403);
}
res.sendStatus(200);
});
package:“ multer”:“ ^ 1.4.2”
答案 5 :(得分:0)
var multer = require('multer')
var upload = multer().single('avatar')
app.post('/profile', function (req, res) {
upload(req, res, function (err) {
if (err instanceof multer.MulterError) {
handle error
} else if (err) {
handle error
}
else{
write you code
}
})
})
you can see this from the [documentation][1]
[1]: https://www.npmjs.com/package/multer#error-handling