[英]Convert object array to formdata
我想將 Object 數組轉換為 Angular 中的 Formdata。 我的 object 數組也可以包含任何鍵值對和圖像。
然后,我必須通過 POST API 將此表單數據發送到后端(Express)。
[{uid: "", image: File, description: "store", price: "800"}
{uid: "f9b37f48-cff0-44f1-aa9f-fb9766bde90b", description: "wooden sandals", price: "100"}
{uid: "dd5adebf-06c6-4d6c-b005-2fcb0a2ca161", description: "blanket", image: File}]
我嘗試了很多選擇,但能夠實現這一點。
如何進行這種轉換?
或者,如果我可以直接將這個 Object 數組發送到來自 Angular 的 POST 調用?
並上傳圖片:
onUploadImage(imageInput: HTMLInputElement, i, id: string) {
if(imageInput.files && imageInput.files[0]) {
this.image = imageInput.files[0]
if(this.collections[i]['image'] === "" || typeof this.collections[i]['image'] === 'string') this.collections[i]['image'] = this.image
let result = this.collectionsToAdd.some(item => item['uid'] === id)
if(result) {
const index = this.collectionsToAdd.indexOf(this.collectionsToAdd.find(item => item.uid === id))
this.collectionsToAdd[index]['image'] = this.image
}
else {
const obj = {
uid: id,
image: null
}
obj.uid = id
obj.image = this.image
this.collectionsToAdd.push(obj)
}
this.reader.readAsDataURL(imageInput.files[0])
this.reader.onload = (event) => {
this.collections[i]['imagePath'] = event.target.result
}
}
}
提前致謝!
你可以試試這個。 這里的數據是你的數組。
const formData = new FormData();
for(let i = 0; i < data.length; i += 1) {
Object.keys(data[i]).forEach((key: string) => {
if(key === 'image') {
formData.append(key, JSON.stringify(data[i][key]))
} else {
formData.append(key, data[i][key])
}
})
}
我認為最簡單的方法是使用多個 HTTP 請求,這是簡單的代碼
// your array object
let preBody = [{uid: "", image: File, description: "store", price: "800"},
{uid: "f9b37f48-cff0-44f1-aa9f-fb9766bde90b", description: "wooden sandals", price: "100"},
{uid: "dd5adebf-06c6-4d6c-b005-2fcb0a2ca161", description: "blanket", image: File}];
// take a array of form data
let formDataArray: FormData[] = [];
// append each object key - value in formDataArray
preBody.forEach((object, index)=>{
formDataArray.push(new FormData());
Object.keys(object).forEach((key)=>{
formDataArray[index].append(key, object[key]);
});
});
// send request for each formData
formDataArray.forEach((formData)=>{
this.http.post('http://localhost/test/text.php', formData).subscribe();
});
注意:您的陣列 object 不應包含任何 object 或陣列。
我希望,它可能會有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.