【发布时间】:2019-07-23 14:26:22
【问题描述】:
当我尝试使用 post 方法上传文件时,multer 给出的 req.file 返回未定义。 也许它没有按名称获得正确的输入?我在这里真的很黑暗。 提前感谢您的帮助
//Front-end form
<form action="/dashboard" method="POST" id="newproduct-form" class="row" enctype='multipart/form-data'>
<input type="file" name="productImage" class="form-control-file" id="exampleInputFile">
</form>
//Backend
const mongoose = require('mongoose');
const multer = require('multer');
const path = require('path');
//Set Storage Engine
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function(req, file, cb){
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
//Init upload
const upload = multer({
storage: storage
}).single('productImage');
router.post('/dashboard', (req, res) => {
upload(req,res,(err) =>{
if(err) console.log(err);
console.log(req.file);
});
}
【问题讨论】:
-
您的代码非常适合我,Windows 10,Node v10.15。我得到以下日志: { fieldname: 'productImage', originalname: '1429307571797.jpg', encoding: '7bit', mimetype: 'image/jpeg'.... etc... 我确实创建了 /public/uploads目录虽然。顺便说一句,您使用什么浏览器?
-
我正在使用火狐。但我还有其他通过 jQuery ajax 处理的字段。这有什么好担心的吗?编辑:我测试了删除 jquery ajax 并且它确实正确记录了......你知道什么会导致这个问题吗?提前致谢
标签: node.js express file-upload multer