const express = require("express");
const multer = require("multer");
const makeDir = require('make-dir');
const fs = require('fs');
const path = require('path');
const upload = multer({
storage: Storage,
fileFilter: (req, file, cb) => {
console.log("upload fileFilter req ::", req.file);
checkFileType(file, cb);
}
}).fields(
[
{
name:'comppic',
maxCount:1
},
{
name:'userpic',
maxCount:1
},
{
name:'usercv',
maxCount:1
}
]
);
function checkFileType(file, cb) {
console.log("file:::::::::::::::", file);
}
我用上面的代碼上傳文件。在這種情況下,我如何檢查文件的大小是上傳和返回錯誤,如果文件大小超過。
console.log("upload fileFilter req ::", req.file); // output undefined
console.log("file:::::::::::::::", file);
output
file::::::::::::::: {
fieldname: 'userpic',
originalname: 'DSC01416.JPG',
encoding: '7bit',
mimetype: 'image/jpeg'
}
請幫我解決這個問題。
不同的文件大小限制基于文件類型,
req.rawHeaders
中有文件大小,所以我在fileFilter
中寫了一個基于文件類型的邏輯,這對我來說是工作,multer set.any
對于multer。req.rawHeaders
是數(shù)組,其中一項(xiàng)是文件大小,在我的請求中,文件大小在數(shù)組的最后一項(xiàng),所以我使用了req.rawHeaders.slice(-1)[0]
在這個邏輯中,
.pdf < 1 Mb
和.png,.jpeg,.jpg < 4 Mb
的大小