Javascript 多文件上传错误(nodejs和react)

Javascript 多文件上传错误(nodejs和react),javascript,node.js,reactjs,file-upload,multer,Javascript,Node.js,Reactjs,File Upload,Multer,我已从客户处发送了此请求 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(

我已从客户处发送了此请求

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);
      }
}
Nodejs

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

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)
  },
});
名称未定义,应用程序崩溃。为什么req对象没有转到
diskStorage
函数。这里的问题是什么?

来自:

请注意,req.body可能尚未完全填充。这取决于客户端向服务器传输字段和文件的顺序

如果将名称附加到前端中的文件之前,则名称应位于
req.body.name

//在发送文件之前先附加名称
//所以我们可以在后端访问它
data.append('名称',文件名);
data.append('file',file);
或者,您可以直接将文件名与文件一起作为第三个参数发送到append函数:

data.append('file',file,fileName);
然后,您可以使用
req.file.originalname
在后端访问文件名。当您在Node.js中处理文件上传时,请参考此免费文档