Форма перенаправления Данные через Express не работают должным образом - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь перенаправить изображение из реакции на внешний API (Jira) через Express. При работе непосредственно в Jira formData передается правильно и изображение обновляется.

При прохождении через express мой API сообщает мне, что файл не предоставлен. Я предполагаю, что это скорее плохой формат.

Вот код реакции, выполняющий вызов обновления изображения:

export const updateImage = (id, file) => {
  let formData = new FormData();
  formData.append('file', file);

  return axios.post(global.api.url(`/${id}/avatar`), formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
};

А вот часть моего express сервера:

const express = require('express');
const cors = require('cors');
const path = require('path');
const axios = require('axios');
const os = require('os');
const formData = require('express-form-data');
const bodyParser = require('body-parser');

let app = express();

const options = {
  uploadDir: os.tmpdir(),
  autoClean: true
};

app.use(formData.parse(options));
app.use(formData.format());
app.use(formData.stream());
app.use(formData.union());

app.use(cors());
app.options('*', cors());
app.use(bodyParser.json());

app.use('/jira/rest', function (req, res, next) {
  req.headers['X-Atlassian-Token'] = 'no-check';

  next();
});

app.post('/jira/rest/**/avatar', (req, res) => {
  const url = 'http://localhost:6000' + req.url;

  axios
    .post(url, req.body, { headers: req.headers })
    .then((axiosResponse) => {
      res
        .set('content-type', axiosResponse.headers['content-type'])
        .send(JSON.stringify(axiosResponse.data));
    })
    .catch((error) => {
      res
        .status(error.response.status)
        .send(JSON.stringify(error.response.data.errors));
    });
});

Я пробовал другой подход с multer , который успешно декодировал мой req.file, но, похоже, это неправильный формат для перехода к ax ios для Jira Api.

Я вижу вызов, сделанный в серверную часть, и я получаю сообщение об ошибке 400 о том, что изображение не было предоставлено.

Поскольку я использую комбинацию express-form-data и req.body в качестве второй параметр моего axios.post, я предполагаю, что формат неправильный.

Я также могу подтвердить, что заголовок правильно установлен на multipart/form-data

Любая помощь приветствуется!

...