2017-08-08 11 views
0

Fileオブジェクトとカスタムモデルオブジェクトを1回のリクエストで送信したいと思います。角度4と春休み:ファイルとモデルオブジェクトを含むFormDataを1回のリクエストで投稿する方法

let formData:FormData = new FormData(); 
let file = this.fileList[0]; 
formData.append('file', file, file.name); 
formData.append('address', JSON.stringify(customObj)); 
... 
this.http.post(fileServeUrl, formData) 

私のバックエンドは、私は私も、ファイルと一緒に、単純な文字列を渡すと、データを受信することができました

@RequestMapping(value = "/fileServe", 
      produces = {"application/json"}, 
      consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}, 
      method = RequestMethod.POST) 
    ResponseEntity<Image> uploadFile(@RequestPart("file") MultipartFile imageData, @RequestPart("address") Address address) throws IOException {...} 

以下のように春の休憩です。

formData.append('file', file, file.name); 
formData.append('address', addressText); 

@RequestMapping(value = "/fileServe", 
      produces = {"application/json"}, 
      consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}, 
      method = RequestMethod.POST) 
    ResponseEntity<Image> uploadFile(@RequestPart("file") MultipartFile imageData, @RequestPart("address") String addressText) throws IOException {...} 

私は私のカスタムオブジェクトのための@RequestBodyを試みたが、でもそれが機能しなかったバックエンド

。いずれか助言してください。

+0

今のところ、JSON形式の文字列を渡そうとしました。カスタムオブジェクトに変換するためにGSONを使用しました。この方法では、引数リストの一部として複数のパラメータを送信する必要はありません。 'ResponseEntity uploadFile(@RequestPart "ファイル")MultipartFile imageData、@RequestPart( "addressObjectInJson")String addressObjectInJson) ' – nsk

答えて

0

@Requestbodyアノテーションと@RequestPartアノテーションの問題は、SpringがHttpMessageConverterを使用して着信jsonメッセージをオブジェクトに変換することです。ファイルとテキスト値を含むフォームデータを送信するとき、springはそれをオブジェクトに変換できません。私はあなたがアドレスの価値を別に渡さなければならないのは怖いです。

@RequestMapping(value = "/fileupload", headers = ("content-type=multipart/*"), method = RequestMethod.POST) 
public ResponseEntity<AjaxResponseBody> upload(@RequestParam("file") MultipartFile file, @RequestParam String name, @RequestParam String postCode) { 

    AjaxResponseBody result = new AjaxResponseBody(); 
    HttpHeaders headers = new HttpHeaders(); 
    if (!file.isEmpty()) { 
     try { 
      Address address = new Address(); 
      address.setName(name); 
      result.setMsg("ok"); 
      return new ResponseEntity<AjaxResponseBody>(result, headers, HttpStatus.OK); 
     } catch (Exception e) { 
      return new ResponseEntity<AjaxResponseBody>(HttpStatus.BAD_REQUEST); 
     } 
    } else { 
     return new ResponseEntity<AjaxResponseBody>(HttpStatus.BAD_REQUEST); 
    } 
} 

Expeptあなたのクライアントアプリが画像/ JPGと、春はJSONを解析し、私はcouldnあなたのアドレスオブジェクトにマッピングすることを可能にするアプリケーション/ JSONのアドレスのMIMEタイプを使用してファイルを送信する方法を見つけた場合」それをしないでください。

関連する問題