无法使用express-fileupload上传文件

问题描述 投票:0回答:2

我正在使用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 });
});

This is the POST request

服务器端代码如下所示:

router.use(fileUpload());

router.post("/add", (req, res) => {
  if (!req.files) return res.status(400).send("No files were uploaded.");

当然,我在尝试上传时收到“没有上传文件”。

node.js express post file-upload axios
2个回答
0
投票

您可以选择使用multer来处理multipart / 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
  }
});

0
投票

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

formData.append("file", data.gameCover[0]);
© www.soinside.com 2019 - 2024. All rights reserved.