Node.js Can';t使用express fileupload上载文件

Node.js Can';t使用express fileupload上载文件,node.js,express,post,file-upload,axios,Node.js,Express,Post,File Upload,Axios,我正在使用express fileupload模块解析上传的文件。 上传是通过axios完成的 const formData = new FormData(); formData.append("file", data.gameCover); formData.append("gameTitle", data.gameTitle); formData.append("gamePrice", data.gamePrice); formData.append("description", data.

我正在使用express fileupload模块解析上传的文件。 上传是通过axios完成的

const formData = new FormData();
formData.append("file", data.gameCover);
formData.append("gameTitle", data.gameTitle);
formData.append("gamePrice", data.gamePrice);
formData.append("description", data.description);

return axios.post(apiUrl + "/games/add", formData).then(res => {
  dispatch({ type: ADD_GAME, payload: res.data.game });
});

服务器端代码如下所示:

router.use(fileUpload());

router.post("/add", (req, res) => {
  if (!req.files) return res.status(400).send("No files were uploaded.");
当然,在尝试上载时,我得到的是“未上载任何文件”。

您可以选择用于处理多部分/formdata。 然后,您可以获得上传的文件,如下所示

const express = require('express');
const path = require('path');
const router = express.Router();
const multer = require('multer');
const storage = multer.diskStorage(
{destination: (req, file, cb)=>{
    cb(null, path.join(__dirname, '../uploads'));
  },
filename: (req, file, cb)=>{
    cb(null, file.originalname);
  }
});
let upload = multer({storage: storage});

// access the uploaded file with your route handler
router.post('/upload',upload.single('file'), (req, res, next)=> {
  if(req.file){
    //you can access your uploaded file
  }
});

最后经过一步又一步的调试发现data.gameCover是一个数组 这就是解决方案

formData.append("file", data.gameCover[0]);

您的代码段中缺少代码,这只是检查是否上载了文件。这里有一个完整的例子:我已经尝试过这个方法。所有操作都与您的示例和getting req.file undefinedcheck完全相同。如果您正确上载了文件,请尝试使用邮递员向您的端点发送post请求,并将文件附加到请求的正文中。是,我收到的响应为“No file uploaded”确认您的express server是否在指定端口上运行。是,它在指定端口上运行