Не удается загрузить файл с помощью экспресс-загрузки файла - PullRequest
0 голосов
/ 02 сентября 2018

Я использую модуль 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 });
});

Это запрос POST

Серверный код выглядит так:

router.use(fileUpload());

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

Конечно, при загрузке я получаю сообщение "Файлы не загружены".

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Наконец после отладки шаг за шагом обнаружил, что data.gameCover это массив так что это решение

formData.append("file", data.gameCover[0]);
0 голосов
/ 02 сентября 2018

При желании вы можете использовать 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
  }
});
...