我正在提供带有一些值和图像的帖子请求/product/create
。
如果我之前控制台每个值
upload(req, res, (err) => {})
它在没有图像信息的情况下正确显示。
如果我在upload(req, res, (err) => {})
之后收到值
未显示任何值。
完整的发布请求代码:
app.post('/product/create', (req, res) => {
let filename;
upload(req, res, (err) => {
if(err){
res.render('index', {
msg: err
});
} else {
if(req.file == undefined){
res.render('index', {
msg: 'Error: No File Selected!'
});
} else {
res.render('index', {
msg: 'File Uploaded!',
filename = req.file.filename;
});
}
}
});
const product = {
title : req.body.title,
desc : req.body.desc,
image : filename,
}
});
配置穆特:
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function(req, file, cb){
cb(null,file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
const upload = multer({
storage: storage,
limits:{fileSize: 1000000},
fileFilter: function(req, file, cb){
checkFileType(file, cb);
}
}).single('myImage');
function checkFileType(file, cb){
const filetypes = /jpeg|jpg|png|gif/;
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
const mimetype = filetypes.test(file.mimetype);
if(mimetype && extname){
return cb(null,true);
} else {
cb('Error: Images Only!');
}
}
Multer 不支持上传功能之外的 'req.file.filename'。由于文件名,原始名称,字段名称等是multer的内置API。它仅限于上传功能。
现在,如果您尝试在数据库中上传产品值,则必须仅在 multer 上传函数中创建一个插入函数。