2017-08-10 33 views
0

我試圖發送多個文件到我的rest API。 所以在我的HTML,我用PrimeNG,有:多部分數據發送對象類型文件

<p-fileUpload #fileInput name="myfiles[]" customUpload="true" (uploadHandler)="myUploader($event)" 
        multiple="multiple" accept="*" maxFileSize="2000000" 
        showUploadButton="false" cancelLabel="Annuler" chooseLabel="Choisir">    
</p-fileUpload> 

在我的角度TS文件我打電話給我的休息API這樣的:

saveData(data, uploadedFiles): Observable<any> { 
    let formData = new FormData(); 
    formData.append("uploadedFiles", uploadedFiles); 
    formData.append("data",JSON.stringify(data)); 
    return this.http.post(apiUrl + "/" , formData) 
     .catch(this.handleError); 
    } 

所以,如果我登錄uploadedFiles我得到:

enter image description here

如果我開發File我:

enter image description here

所以我可以看到我已經正確地獲得了我上傳的文件。

但是,當我發送POST請求,我可以看到我的發送數據是: enter image description here

我想這就是爲什麼在我休息API,當我試圖讓文件名,他們null

這裏是我實現我的休息API:

@POST 
    @Path("/") 
    @Consumes({MediaType.MULTIPART_FORM_DATA}) 
    public Response createClink(@FormDataParam("data") MyData myData, 
           @FormDataParam("uploadedFiles") List<FormDataBodyPart> bodyParts, 
           @FormDataParam("uploadedFiles") FormDataContentDisposition fileDispositions) { 
     StringBuffer fileDetails = new StringBuffer(""); 
     /* Save multiple files */ 

     for (int i = 0; i < bodyParts.size(); i++) { 
      BodyPartEntity bodyPartEntity = (BodyPartEntity) bodyParts.get(i).getEntity(); 
      String fileName = bodyParts.get(i).getContentDisposition().getFileName(); 
      System.err.println("fileName"); 
      System.err.println(fileName); 

      //saveFile(bodyPartEntity.getInputStream(), fileName); 
     }    
    } 

那麼,爲什麼我的文件對象未發送正確你呢?我怎樣才能做到這一點 ? 還有其他錯誤嗎?

回答

0

所以我在正面和背面都有問題。 在前面我做:

saveData(data, uploadedFiles): Observable<any> { 
    let formData = new FormData(); 
    formData.append("data",JSON.stringify(data)); 
    for (let i = 0; i < uploadedFiles.length; i++) { 
     formData.append("uploadedFiles", uploadedFiles[i], uploadedFiles[i].name); 
    } 
    return this.http.post(apiUrl + "/" , formData) 
     .catch(this.handleError); 
    } 

再換我只放一個列表,所以這是我的解決方案:

public Response create(@FormDataParam("data") MyData myData, 
           @FormDataParam("uploadedFiles") List<FormDataBodyPart> bodyParts, 
           @FormDataParam("uploadedFiles") List<FormDataContentDisposition> fileDispositions) { 
} 
相關問題