Node.js 多错误处理
根据Multer的官方文件,这是处理Multer内部错误的正确方法Node.js 多错误处理,node.js,amazon-web-services,amazon-s3,error-handling,multer,Node.js,Amazon Web Services,Amazon S3,Error Handling,Multer,根据Multer的官方文件,这是处理Multer内部错误的正确方法 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 we
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
})
})
我的代码设置有点不同,我不知道如何更改下面的代码来以这种方式处理错误。我最大的问题是我的var上传设置与AmazonS3非常不同。我将如何更改下面的代码以合并如上所示的错误处理
var upload = multer({
limits : { files: 3 },
storage: multerS3({
s3: s3,
bucket: 'mybucket',
key: function (req, file, cb) {
var fileExtension = file.originalname.split(".")[1];
var path = "uploads/" + req.user._id + Date.now() + "." + fileExtension;
cb(null, path);
},
destination: function(req, file, callback) {
callback(null, './public/uploads');
},
filename: function(req, file, callback) {
callback(null, Date.now() + file.originalname);
}
})
});
我的邮寄路线是这样设置的。。。(仅显示部分代码)
我不知道您是否仍然有疑问,但是对于仍然关注它的任何人,您应该使用闭包的功能从内部调用您的函数 因此,您的代码应该是:
var upload = multer({
limits : { files: 3 },
storage: multerS3({
s3: s3,
bucket: 'mybucket',
key: function (req, file, cb) {
var fileExtension = file.originalname.split(".")[1];
var path = "uploads/" + req.user._id + Date.now() + "." + fileExtension;
cb(null, path);
},
destination: function(req, file, callback) {
callback(null, './public/uploads');
},
filename: function(req, file, callback) {
callback(null, Date.now() + file.originalname);
}
})
}).array('image', 3);
router.post("/", function(req, res, next) {
upload(req, res, function (err) {
//deal with the error(s)
if (err) {
// An error occurred when uploading
return
}
// Everything went fine
// put here whatever you want to do with your code
var filepath = undefined;
var filepath2 = undefined;
var filepath3 = undefined;
if(req.files[0]) {
filepath = req.files[0].key;
}
if(req.files[1]) {
filepath2 = req.files[1].key;
}
if(req.files[2]) {
filepath3 = req.files[2].key;
}
});
});
这样,您就可以自己处理错误,而不是使用默认的express.js处理程序。希望有帮助!:)
var upload = multer({
limits : { files: 3 },
storage: multerS3({
s3: s3,
bucket: 'mybucket',
key: function (req, file, cb) {
var fileExtension = file.originalname.split(".")[1];
var path = "uploads/" + req.user._id + Date.now() + "." + fileExtension;
cb(null, path);
},
destination: function(req, file, callback) {
callback(null, './public/uploads');
},
filename: function(req, file, callback) {
callback(null, Date.now() + file.originalname);
}
})
}).array('image', 3);
router.post("/", function(req, res, next) {
upload(req, res, function (err) {
//deal with the error(s)
if (err) {
// An error occurred when uploading
return
}
// Everything went fine
// put here whatever you want to do with your code
var filepath = undefined;
var filepath2 = undefined;
var filepath3 = undefined;
if(req.files[0]) {
filepath = req.files[0].key;
}
if(req.files[1]) {
filepath2 = req.files[1].key;
}
if(req.files[2]) {
filepath3 = req.files[2].key;
}
});
});