我正在使用提到的fileuplaod中间件。我想设置一个中间件,该文件警告文件大小超出限制,但不想截断文件。
app.use(fileUpload({
limits: { fileSize: 1 * 1024 * 1024 },
createParentPath: true,
safeFileNames: true,
preserveExtension: 5,
limitHandler: function (req, res, next) {
Logger.warn("File size limit has been exceeded");
},
abortOnLimit: false,
useTempFiles: true,
tempFileDir: './temp/apiuploads'
}));
文件被截断。因此,无法打开上载的文件。当文件大小超过限制但不想截断文件时,我想记录该消息。请帮我解决。
答案 0 :(得分:2)
不要为中间件添加文件限制选项,我也建议仅将中间件用于上传路由。
使用大小值上传后检查上传的文件大小。
如果大小超出限制,则记录消息。
示例:
app.use('/upload', fileUpload({
createParentPath: true,
safeFileNames: true,
preserveExtension: 5,
useTempFiles: true,
tempFileDir: './temp/apiuploads'
}));
app.post('/upload', (req, res) => {
if (!req.files || Object.keys(req.files).length === 0) {
res.status(400).send('No files were uploaded.');
return;
}
const uploads = Object.values(req.files).map((file) => {
if (file.size > 1 * 1024 * 1024) {
Logger.warn(`File ${file.name} size limit has been exceeded`);
}
const uploadPath = path.join(__dirname, 'uploads', file.name);
return file.mv(uploadPath);
});
Promise.all(uploads)
.then(() => res.send('Files uploaded to ' + path.join(__dirname, 'uploads')))
.catch(err => res.status(500).send(err));
});