可以通过Multer FileFilter错误来表达
我正在尝试使用Multer上传。
我为此创建了一个额外的文件,这是FileUpload文件:
const multer = require("multer");
const { v4: uuidv4 } = require("uuid");
const { join, extname } = require("path");
const fileStorage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, join(__dirname, "../public/Uploads"));
},
filename: function (req, file, cb) {
cb(null, `${uuidv4()}${extname(file.originalname)}`);
},
});
const uploadFile = multer({
storage: fileStorage,
fileFilter: function (req, file, cb) {
if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
req.fileValidationError = "نوع فایل مورد قبول نیست!";
return cb(new Error("نوع فایل درست نیست"), false);
}
cb(null, true);
},
});
module.exports = uploadFile;
当文件扩展名与我的期望不符合我的期望时,我想通过错误,但我无法将错误传递到表达。 这是我的路由器:
const express = require("express");
const router = express.Router();
const ProfilePicture = require("../models/profilePicture");
const { join, extname } = require("path");
const fs = require("fs");
const upload = require("../tools/fileUpload");
router.post(
"/changeProfile",
upload.single("profile_pic"),
async (req, res) => {
try {
const { image } = await ProfilePicture.findOne({});
await fs.unlink(join(__dirname, `../public/Uploads/${image}`), (err) => {
if (err) throw err;
});
await ProfilePicture.deleteMany();
await ProfilePicture.create({ image: req.file.filename });
return res.status(200).send({ success: true });
} catch (error) {
if (!req.file) {
return res
.status(500)
.render("error/500", { err: "نوع فایل مورد قبول نیست!" });
}
console.log(extname(req.file));
console.log(error);
return res.status(500).render("error/500", { err: error });
}
}
);
module.exports = router;
我真的很想找到一种方法来传递错误以表达并不使用CB()将其记录到控制台。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 multer 错误错误>错误处理中间件例如,
You can handle the
multer
error with an error-handling middleware, for example,