Я знаю, что об этом уже спрашивали, но ни одно из решений не работает для меня.Сначала я попытался решить эту проблему, используя axios
, но, читая об этом, кажется, есть ошибка, которая не позволяет мне использовать ее для загрузки файлов.Так что я застрял с fetch
.
Это моя функция загрузки:
export async function postStudyPlan(plan, headers) {
const options = {
method: "POST",
body: plan
}
return fetch(`${HOST}:${PORT}/study-plans/add`, options)
.then(res => {return res.json()})
.catch(err => console.log(err));
}
Вот как я это называю:
onStudyPlanUpload(files) {
const file = files[0];
let formData = new FormData();
formData.append("pdf", file);
formData.append("comments", "A really lit study plan!");
formData.append("approved", true);
formData.append("uploaded_by", "Name");
formData.append("date_uploaded", "2012-02-1");
formData.append("university", "australian_national_university");
let plan = {
"pdf": file,
"comments": "A really lit study plan!",
"approved": true,
"uploaded_by": "Name",
"date_uploaded": Date.now(),
"university": "australian_national_university"
}
postStudyPlan(formData)
.then(res => console.log(res))
.catch(err => console.log(err))
}
Я знаю, чтоfile
на самом деле файл.Всякий раз, когда я изменяю "pdf"
на обычную строку, все работает нормально.Но когда я использую объект File
, я ничего не получаю к своему бэкэнду, только пустой объект.Что мне здесь не хватает?Я чувствую, что мое решение в основном идентично любому другому решению, которое я нашел в Интернете.
Редактировать: Также попытался использовать FormData и добавить headers: {"Content-Type": "application/x-www-form-urlencoded"}
к опциям.Тот же результат.
Редактировать 2 Я начинаю думать, что мой бэкэнд может быть проблемой!Это мой бэкэнд, и я на самом деле получаю некоторые выходные данные для события «данные».Не уверен, как это обработать ...
router.route("/add").post((req, res) => {
req.on("data", function(data) {
console.log("got data: " + data.length);
console.log("the Data: ?" )
// let t = new Test(data);
// t.save()
// .then(res => console.log(res))
})
req.on("end", function(d) {
console.log("ending!");
})
req.on("error", function(e){
console.log("ERROR: " + e);
})
});