Отправка многочастной формы с файлом в Axios, Nodejs - PullRequest
0 голосов
/ 13 июня 2019
const form_data = new FormData();
form_data.append("File", fs.createReadStream(pathToFile));
form_data.append('Login', alias.toUpperCase());

const request_config = {
    headers: {
        "Authorization": "Basic 123",
        "Content-Type": 'multipart/form-data'
    },
    data: form_data
};

await axios.post(url, params, request_config).then(response => {

Отправка в конечную точку, которую я не могу отладить. Ответ 500.

Это ошибка:

enter image description here

Это правильный способ сделать это?

Могу ли я как-то точно увидеть, что посылает Аксиос?

Это запрос почтальона, полученный от автора API. Это проходит:

POST /api/upload HTTP/1.1

Host: api.test.contoso.se

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

Authorization: Basic 123

User-Agent: PostmanRuntime/7.13.0

Accept: */*

Cache-Control: no-cache

Postman-Token: 089af753-fa12-46c4-326f-dfc39c36faab,c5977145-ece3-4b53-93ff-057788eb0dcf

Host: api.test.contoso.se

accept-encoding: gzip, deflate

content-length: 18354

Connection: keep-alive

cache-control: no-cache

Content-Disposition: form-data; name="Lang"

SV
------WebKitFormBoundary7MA4YWxkTrZu0gW--

Content-Disposition: form-data; name="File"; filename="/C:/Users/file.docx


------WebKitFormBoundary7MA4YWxkTrZu0gW--

Content-Disposition: form-data; name="Login"

ABC

1 Ответ

1 голос
/ 13 июня 2019

Сообщение об ошибке на вашем снимке экрана ясно: «Отсутствует граница типа содержимого».

Чтобы использовать axios для запроса multipart/form-data, необходимо установить границу для загрузки файла.Пример кода:

const form_data = new FormData();

...

const request_config = {
    headers: {
        "Authorization": "Basic 123",
        "Content-Type": 'multipart/form-data; boundary=' + form._boundary
    },
    data: form_data
};

await axios.post(...)

«Могу ли я каким-то образом увидеть, что именно Axios отправляет?»

Вы можете использовать прокси-сервер HTTP, такой как Charles, чтобы перехватить запроси проверьте, какие данные отправляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...