【发布时间】:2022-01-06 02:15:21
【问题描述】:
我想在将文件上传到服务器时对其进行过滤,但 Multer fileFilter 方法不起作用。
后端
destination 和 filename 方法也可以正常工作,但 fileFilter 不能正常工作。
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "./public/images/");
},
filename: function (req, file, cb) {
cb(null, file.fieldname + path.extname(file.originalname));
},
fileFilter: function (req, file, callback) {
console.log("Hello Word"); // This doesn't work either
var ext = path.extname(file.originalname);
if (!['.jpg', '.jpeg'].includes(ext)) {
return callback(new Error('Only images are allowed'));
}
callback(null, true);
},
});
app.use(
multer({ storage: storage }).fields([
{ name: "logo", maxCount: 1 },
{ name: "favicon", maxCount: 1 },
])
);
前端
<form action="" method="post" enctype="multipart/form-data">
<table>
<tbody>
<tr>
<td>Logo</td>
<td>
<input type="file" name="logo" accept="image/jpeg, image/jpg"/>
</td>
</tr>
<tr>
<td>Favicon</td>
<td>
<input type="file" name="favicon" accept="image/x-icon" />
</td>
</tr>
</tbody>
</table>
</form>
【问题讨论】:
-
请提供您的所有代码或存储库的链接;-) 控制台显示什么错误?
-
这些答案解决了你的问题吗?
-
@MarioG8 是的,我解决了,非常感谢。
-
所以您可以将我的回答标记为解决您的问题 ;-) 最好的问候!
标签: javascript node.js express multer