文件上传中文件大小超过multer时如何发送响应。上传的文件大于限制时应用程序崩溃。我尝试使用 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);
}
});
});
最佳答案
uploadOptions 的回调在 err 对象中返回代码:'LIMIT_FILE_SIZE'。你可以这样处理。另外,您应该在开始处理文件之前检查错误。
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);
});
}
});
关于javascript - 如何处理 multer node.js 中的文件大小超出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595160/