【发布时间】:2021-08-16 20:02:20
【问题描述】:
我已从客户端发送此请求。
if(file){
const data = new FormData()
const fileName = Date.now() + file.name
data.append('file', file) // file comes from state while submitting
data.append('name', fileName)
try {
await axios.post('/upload_image', data)
} catch (error) {
console.log(error.message);
}
}
节点
const multer = require('multer')
// file upload
const storage = multer.diskStorage({
destination: (req, file, cb) => {
console.log(req.body);
cb(null, "./public/images/");
},
filename: (req, file, cb) => {
cb(null, req.body.name)
},
});
const upload = multer({ storage });
router.post("/upload_image", upload.single('file'), (req,res)=>{
console.log(req.body);
try {
res.status(200).json("file uploaded successfully")
} catch (error) {
console.log(error.message);
}
});
如果我打印 req.body in
router.post("/upload_image", upload.single('file'), (req,res)=>{
console.log(req.body.name)
console.log(req.file)
......................
.......................
})
这里名称被打印出来,req.file 也被打印出来。但是,里面
const storage = multer.diskStorage({
destination: (req, file, cb) => {
...................
..............................
},
filename: (req, file, cb) => {
console.log(req.body.name); //undefined
cb(null, req.body.name)
},
});
name 变得未定义,应用程序崩溃。为什么 req 对象没有转到 diskStorage 函数。这里有什么问题?
【问题讨论】:
标签: javascript node.js reactjs file-upload multer