#javascript #node.js #post #axios
#javascript #node.js #Публикация #axios
Вопрос:
Я пытаюсь отправить PDF-файл на веб-сайт, используя библиотеку Axios на узле JS. На сайте приведен пример, который отлично работает, если я использую CURL:
curl -F "file=@test.pdf" https://my.hiddenwebsite.com/upload
Но если я попытаюсь повторить HTTP-запрос с помощью Axios, это выдаст мне сообщение об ошибке FILE_NOT_PROVIDED с кодом 400. Ниже приведен код, который я пытался выполнить.
let form = new FormData();
let stream = fs.createReadStream(path.join(__dirname, "test.pdf"));
form.append("file", stream);
let formHeaders = form.getHeaders();
const request_config = {
headers: {
...formHeaders,
},
};
axios
.post("https://my.hiddenwebsite.com/upload", form, request_config)
.then((res) => {
console.log(res.data);
})
.catch((err) => {
console.log(err.response.data);
});
Если бы кто-нибудь мог дать мне подсказку о том, что я делаю неправильно, это было бы здорово.
Комментарии:
1.
createReadStream
возвращает поток, а не файл. Возможноreadfilesync
, это поможет вам лучше2. Ваш код работает для меня на тестовом сервере. Интересно, ожидает ли ваш сервер конкретное имя файла? Может ли он ожидать чего-то другого, кроме «file»?
3. @AndreNuechter Я только что пробовал, это тоже не работает, та же ошибка
4. @TerryLennox Я на самом деле не эксперт по CURL, я не так часто его использую, но я подумал, что это «file=@text.pdf » означало, что серверу нужен файл с именем файла «file». Я ошибаюсь?
5. Извиняюсь, @Sosnos, вы правы. Это странно.. Я могу загрузить на локальный тестовый сервер, на котором работает Express / Multer, используя ваш код … должно быть, что-то еще пошло не так…