2017-08-10 7 views
0

私は残りのAPIに複数のファイルを送信しようとしています。 だから私はPrimeNGを使用し、私のhtmlで、そこにある:マルチパートデータ送信オブジェクトタイプファイル

<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リクエストを送信するとき、私は私のデータを送ることが確認できている:私はそれは私がファイル名を取得しようとすると、彼らはnull

あり、なぜ私の残りのAPIでだと思う enter image description here

私のファイルオブジェクトが正しく送信されませんだから、なぜ

@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); 
     }    
    } 

:ここ

は、私は私の残りのAPIを実装する方法ですそう?これどうやってするの ? 別の間違いはありますか?

答えて

0

私は前後に問題がありました。フロントで 私がやった:私は1つのリストだけを置くところ

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) { 
} 
関連する問題