我正在嘗試使用表單資料上傳檔案。所以我將影像資料附加到 formdata 物件。但我不斷收到錯誤:(The laptop image field is required.
'laptop_image' 的拼寫是正確的)。
我還必須附加一些其他資料,它們作業得很好
const fileInput = document.getElementById('laptop_image');
async function handleFormSubmit(event) {
event.preventDefault();
const form = document.querySelector('form');
const url = form.action;
try {
const formData = new FormData(form);
formData.append('laptop_image', fileInput.files[0]);
const responseData = await postFormDataAsJson({ url, formData});
console.log({ responseData });
} catch (error) {
//also console.log(fileInput.files[0]); logs an image object
console.error(error);
}
}
form.addEventListener("submit", handleFormSubmit);
我究竟做錯了什么?:/
uj5u.com熱心網友回復:
你沒有提供postFormDataAsJson,但我們可以對它的作用做出一些假設。
您不能輕松地將 FormData 物件序列化為 JSON。JSON.stringify會將其轉換為空物件。
const fd = new FormData();
fd.append("key", "value");
const json = JSON.stringify(fd);
console.log(`JSON: ${json}`);
雖然有一些方法可以遍歷 FormData 物件中的資料以從中生成 JSON:
- 這在很大程度上使用 FormData 物件呈現毫無意義
- JSON 仍然沒有“檔案”資料型別
一般來說,如果要上傳檔案 其他資料,則需要發送多部分表單資料。瀏覽器內置的 Ajax API 將自動將 FormData 物件序列化為該格式。
fetch(url, { method: "POST", body: fd });
當然,您需要以 HTTP 服務器所期望的格式發送資料(我們對您將資料發布到的格式一無所知)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/503659.html
標籤:javascript 表单数据
