[英]How Handle File Size Exceeds Error in multer node.js
How to send a response if the file size exceeds in the multer in the file upload.The app crashes when the file uploaded the is greater than the limit. 如果文件大小超过文件上传中的过滤器,如何发送响应。当上传的文件大于限制时,应用程序崩溃。 I tried to check the req.file.size with uploadFileSize , unfortunately it doesn't work. 我试图用uploadFileSize检查req.file.size,遗憾的是它不起作用。
var uploadOptions = multer({
dest: uploadDir,
limits: {fileSize: uploadFileSize},
}).single('file');
app.post('/upload', function (req, res) {
uploadOptions(req, res, function (err) {
var temp = req.file.path;
var file = uploadDir + req.file.originalname;
var source = fs.createReadStream(temp);
var destination = fs.createWriteStream(file);
source.pipe(destination);
fs.unlink(temp);
source.on('end', function () {
var result = {
'status': 'sucess',
'file': file
};
fs.chmod(file, 0777);
res.send(result);
});
source.on('error', function (err) {
var result = {
'status': 'Fail',
'error': err
};
res.send(result);
});
if (err) {
var result = {
'status': 'Fail',
'error': err
};
return res.end(result);
}
});
});
The callback of uploadOptions returns code :'LIMIT_FILE_SIZE' in err object. uploadOptions的回调返回错误对象中的代码:'LIMIT_FILE_SIZE'。 You can handle by that. 你可以处理。 Also you should check err before starting to process file. 你也应该在开始处理文件之前检查错误。
uploadOptions(req, res, function (err) {
if (err) {
if (err.code === 'LIMIT_FILE_SIZE') {
// 'File too large'
} else {
var result = {
'status': 'Fail',
'error': err
};
res.end(result);
}
} else {
var temp = req.file.path;
var file = uploadDir + req.file.originalname;
var source = fs.createReadStream(temp);
var destination = fs.createWriteStream(file);
source.pipe(destination);
fs.unlink(temp);
source.on('end', function () {
var result = {
'status': 'sucess',
'file': file
};
fs.chmod(file, 0777);
res.send(result);
});
source.on('error', function (err) {
var result = {
'status': 'Fail',
'error': err
};
res.send(result);
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.