node.js - express body-parser 和 multer value 接收问题?
问题描述
我正在发出/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!');
}
}
解决方案
Multer 不支持上传功能之外的“req.file.filename”。由于文件名、原始名、字段名等是 multer 的内置 API。它仅限于上传功能。
现在,如果您尝试在数据库中上传产品值,那么您只需在 multer 上传函数中创建一个插入函数。
推荐阅读
- javascript - 导入和导出外部 javascript 代码
- visual-studio-code - Azure 数据块笔记本的 VSO 代码
- api - 从异步方法获取数据并将其添加到颤振中的另一个异步方法时出现问题
- javascript - 如何在本地存储(Vue)中保存当前语言(i18n)
- mysql - 对来自 3 个 SQL 表的数据进行分组
- php - WordPress 将 jQuery 移动到页脚,但依赖于它的脚本在它之前加载
- java - java中列表上的同步块
- c - 如何在 C 中识别 OCaml 可扩展变体类型值?
- vulkan - Vulkan 中先前子通道的输入附件
- python - UnicodeDecodeError:“ascii”编解码器无法解码位置 0 的字节 0xa7:不在序数范围内 (128)