Получение req.body и req.file как пустого при загрузке файла с axios - PullRequest
0 голосов
/ 24 апреля 2020

Вот внешний интерфейс:

let file = this.$refs.file.files[0] //"this" refers to vue
  let data = new FormData();
  data.append("image", file, file.fileName);
  data.append("content", this.content);
  data.append("title", this.title);
  data.append("action_type", "add_article");

  axios
    .post("http://localhost:3000/api", data, {
      headers: {
        // "accept": "application/json",
        // "Accept-Language": "en-US,en;q=0.8",
        // "Content-Type": `multipart/form-data; boundary=${data._boundary}`,
        // "auth": util.getCheckedToken(),
        'content-type': 'multipart/form-data'
      }
    })
    .then(response => {
      alert("success!", response);
    })
    .catch(error => {
      alert("fail!", error);
    });

Некоторая часть внутреннего интерфейса:

app.use(multer({
  storage: multer.diskStorage({
    destination: (req, file, cb) => { cb(null, '../static/images'); },
    filename: (req, file, cb) => { cb(null, my_random.fileName(file.originalname)); }
  }),
  fileFilter: (req, file, cb) => { cb(null, "image/png image/jpg image/jpeg".split(' ').includes(file.mimetype)); }
}).single('image'));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

Смотрите теги для инструментов, которые я использую. Я не получаю сообщение об ошибке, и req.file и req.body пусты. В чем может быть причина проблемы?

1 Ответ

0 голосов
/ 30 апреля 2020

Была похожая проблема при попытке отправить текстовый / CSV-файл, исправленный путем анализа типа содержимого перед маршрутом. Например:

app.use(bodyParser.raw({type: multipart/form-data}));

До

app.use(multer({}))

bodyParser.raw ([опции]) возвращает промежуточное программное обеспечение, которое анализирует все тела как буфер и просматривает только те запросы, где содержимое -Тип заголовка соответствует опции типа

...