Axios FormData () получает пустой объект - PullRequest
0 голосов
/ 30 ноября 2018

Код на стороне браузера

let data = new FormData();
data.append('file', file);
data.append('userId', userId);


axios.post(`${baseUrl}/uploadFile`, data, {headers: {'Content-Type':'multipart/form-data'}}).then((result) => console.log(result)).catch((err) => cb(err))

Код на стороне сервера

app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, PUT, PATCH, OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, api_key, Authorization'); 
    res.setHeader('Access-Control-Expose-Headers', 'Content-Range');
    next();
  }); 

app.use('/', express.static('public'))

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

Я перепробовал почти все, но всегда получаю пустой объект.

ФайлPDF

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 30 ноября 2018

Вы отправляете multipart/form-data закодированные данные.

У вас есть:

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

т.е.

  • Декодер для URLзакодированные данные
  • Декодер для закодированных данных JSON

У вас их нет для многочастных закодированных данных!

Теперь, так как вы используете его, смотритедокументация для анализатора тела :

Это не относится к составным телам из-за их сложной и типично большой природы.Для составных частей вас могут заинтересовать следующие модули:

  • busboy и connect-busboy
  • multiparty и connect-multiparty
  • грозный
  • multer
...