我正在向发布请求/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,
}
});
配置Multer:
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!');
}
}
答案 0 :(得分:-3)
Multer不支持上载功能之外的“ req.file.filename”。作为文件名,原始名称,字段名称等是multer的内置API。它仅限于上传功能。
现在,如果您要在数据库中上载产品值,则只需在multer上载函数中创建一个插入函数。