Sha*_*der 3 node.js express multer busboy
我正在使用multer将文件保存在通过express&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);
Run Code Online (Sandbox Code Playgroud)
Multer会为我将文件保存在指定的目标文件夹中。
所有这些都工作正常,但我有以下问题:
这是如何编写处理上传和错误的 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()
})
}
Run Code Online (Sandbox Code Playgroud)
尝试这个
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
})
}
Run Code Online (Sandbox Code Playgroud)
参考:
http://wiki.workassis.com/nodejs-express-get-post-multipart-request-handling-example/
https://www.npmjs.com/package/multer#error-handling
您可以使用以下onError选项处理错误:
app.post('/upload',[
multer({
dest : './uploads/',
onError : function(err, next) {
console.log('error', err);
next(err);
}
}),
function(req, res) {
res.status(204).end();
}
]);
Run Code Online (Sandbox Code Playgroud)
如果调用next(err),则将跳过您的路由处理程序(生成204),并且Express将处理该错误。
我认为(不确定100%取决于multer实现方式)在保存文件时将调用您的路由处理程序。onFileUploadComplete上传完成后,您可以用来记录一条消息,并将其与调用路由处理程序时进行比较。
查看代码,multer当文件完全上传后,调用下一个中间件/路由处理程序。
| 归档时间: |
|
| 查看次数: |
16132 次 |
| 最近记录: |