Angular 如何在typescript中为数组使用formData.append

Angular 如何在typescript中为数组使用formData.append,angular,typescript,Angular,Typescript,您好,我想向我的端点配置文件发送一个表单,我的问题在字段user:{},因为我找不到将数组放入该字段的方法 这是我的端点中的字段: { "id": 4, "ci": "123456", "photo": "http://127.0.0.1:8000/media/profiles/12809632_10208569440535095_617453747387788113_n_zAUAVMf.jpg", "phone_number": "+59177621589", "user"

您好,我想向我的端点配置文件发送一个表单,我的问题在字段user:{},因为我找不到将数组放入该字段的方法

这是我的端点中的字段:

{
  "id": 4,
  "ci": "123456",
  "photo": "http://127.0.0.1:8000/media/profiles/12809632_10208569440535095_617453747387788113_n_zAUAVMf.jpg",
  "phone_number": "+59177621589",
  "user": {
    "id": 5,
    "username": "sdanderson",
    "first_name": "ssss",
    "last_name": "ssss"
  },
  "experience": "null",
  "typeskill": [
    {
      "id": 1,
      "skill_name": "developer"
    }
  ]
}
以下是我的PUT请求服务:

putProfile(id:string,token:string,body:any,files:any):Observable<Profile>{

//save data to send to the endpoint for update
    let formData: FormData = new FormData();

    for (let file of files) {
        formData.append('photo', file);
    }
    formData.append('ci',body['ci']);  
    formData.append('phone_number', body['phone_number']); 
    formData.append('experience',body['experience']);
    formData.append('user',body['user']);//here i have inside the fields: body['user'].id,body['user'].first_name,body['user'].last_name





    //include header
    let headers = new Headers();
    headers.append('Accept', 'application/json');
    headers.append("Authorization","Token "+ token);

    return this.http.put(this.api+"profile/"+id+'/',formData,{headers})
        .map(this.extractData)
        .catch(this.handleError);
}
putProfile(id:string,token:string,body:any,files:any):可观察{
//保存要发送到端点进行更新的数据
让formData:formData=newformdata();
for(让文件中的文件){
formData.append('photo',file);
}
append('ci',body['ci']);
formData.append('phone_number',body['phone_number']);
formData.append('experience',body['experience']);
formData.append('user',body['user']);//我在字段中有:body['user'].id,body['user'].first_name,body['user'].last_name
//包含标题
let headers=新的headers();
headers.append('Accept','application/json');
标题。附加(“授权”、“令牌”+令牌);
返回this.http.put(this.api+“profile/”+id+“/”,formData,{headers})
.map(此.extractData)
.接住(这个.把手错误);
}
FormData的append()方法只能接受stringblob类型的对象。如果需要附加数组,请使用JSON.stringify()方法将数组转换为有效的JSON字符串

以下是如何:

formData.append('user', JSON.stringify(body['user']));

您可以阅读有关JavaScript的JSON对象的更多信息。

我遇到了类似的问题,并且在键中声明了数组。对于您的示例,它如下所示:

formData.append('user[id]', body['user']['id']);
...

如果您不想或无法解析服务器站点上的json,它将非常有用。

我必须向同一个formdata id添加四个图像。下面是我的代码

const files = event.target.files;
  for(var i=0;i< files.length;i++){
    this.formData.append("imgs",files[i]);
  }
const files=event.target.files;
对于(var i=0;i
像这样试试。。它在我的项目中起作用


Tbh,这感觉像是一个解决办法,有点愚蠢,因为typescript,你不得不对数据进行字符串化。我不明白为什么会有“body[]”这个词?它有什么作用?有必要吗?
 var formData= new FormData();

    for (let file of files) {
        formData.append('photo[]', file);
    }