Upload image with HttpClient

后端 未结 2 707
庸人自扰
庸人自扰 2020-12-08 15:46

Problem

I try to upload an image with angular\'s HttpClient to API Content-Type: multipart/form-data (angular v4+). Is it supported? How to do it?

2条回答
  •  猫巷女王i
    2020-12-08 15:53

    For me the trick was not to set the content-type to multipart/form-data. But that was done automatically for me.

    
    

    Here's my code that uploads multipart/form-data. No need to set the headers.

    private setFile(event) {
        let files = event.srcElement.files
        if (!files) {
          return
        }
    
        let path = `${environment.celoApiEndpoint}/api/patientFiles`
        let data = {"patientData": {
          "uid": "",
          "firstName": "",
          "lastName": "",
          "gender": "Not Specified",
          "dateOfBirth": ""
        }}
        // let headers = new HttpHeaders()
        //   .set('content-type', 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW')
        // let headers = new HttpHeaders().set('content-type', 'multipart/form-data')
        const formData: FormData = new FormData();
    
        for (let i = 0; i < files.length; i++) {
          formData.append(i.toString(), files[i], files[i].name);
        }
        formData.append("data", JSON.stringify(data));
        this.http.post(path, formData).subscribe(
          (r)=>{console.log('got r', r)}
        )
      }
    

提交回复
热议问题