multer 的问题不允许默认图像
issue with multer not allowing a default image
所以我遇到了一个我无法弄清楚的 multer 问题。当我添加带有图像的项目时,一切正常,但如果我尝试添加没有图像的项目,则会失败。我有一个 if 语句,如果 req.file 未定义,它会定义一个默认图像,但它失败并显示 req.file.filename is undefined 的错误...这是代码
多路设置:
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, "./public/uploads");
},
filename: function(req, file, callback) {
callback(null, Date.now() + file.originalname);
}
});
var upload = multer({ storage: storage }).single("file");
路线:
router.post("/item/add", middleware.isLoggedIn, (req, res) => {
User.findById(req.user._id, (err, user) => {
upload(req, res, err => {
if (err) {
req.flash("error", "failed to upload file");
return res.redirect("/products");
}
var item = new Item();
item.name = req.body.name;
item.description = req.body.description;
item.price = req.body.price;
item.createdBy = { id: req.user._id, username: req.user.username };
if (typeof req.file === undefined) {
item.image = "/uploads/no-img.png";
} else {
item.image = "/uploads/" + req.file.filename;
}
item.save(function(err) {
if (err) {
res.send(err);
}
return res.redirect("/products");
});
});
});
});
所以我想我的问题是......我如何设置它不会在没有选择图像的情况下失败?
您的问题在这里:
if (typeof req.file === undefined) {
typeof returns 一个字符串。
您的支票应该是 if (typeof req.file === "undefined") {
所以我遇到了一个我无法弄清楚的 multer 问题。当我添加带有图像的项目时,一切正常,但如果我尝试添加没有图像的项目,则会失败。我有一个 if 语句,如果 req.file 未定义,它会定义一个默认图像,但它失败并显示 req.file.filename is undefined 的错误...这是代码
多路设置:
var storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, "./public/uploads");
},
filename: function(req, file, callback) {
callback(null, Date.now() + file.originalname);
}
});
var upload = multer({ storage: storage }).single("file");
路线:
router.post("/item/add", middleware.isLoggedIn, (req, res) => {
User.findById(req.user._id, (err, user) => {
upload(req, res, err => {
if (err) {
req.flash("error", "failed to upload file");
return res.redirect("/products");
}
var item = new Item();
item.name = req.body.name;
item.description = req.body.description;
item.price = req.body.price;
item.createdBy = { id: req.user._id, username: req.user.username };
if (typeof req.file === undefined) {
item.image = "/uploads/no-img.png";
} else {
item.image = "/uploads/" + req.file.filename;
}
item.save(function(err) {
if (err) {
res.send(err);
}
return res.redirect("/products");
});
});
});
});
所以我想我的问题是......我如何设置它不会在没有选择图像的情况下失败?
您的问题在这里:
if (typeof req.file === undefined) {
typeof returns 一个字符串。
您的支票应该是 if (typeof req.file === "undefined") {