2016-09-08 13 views
0

は、以下の私のコントローラです:とAngularJS

@RequestMapping(value="/upload", method=RequestMethod.PUT) 
public ResponseEntity<String> handleFileUpload(
      @RequestParam("file") MultipartFile file, 
      @RequestParam("data") String campaignJson, 
      Principal principal) throws JsonParseException, JsonMappingException, IOException { 

私はMultipartFileだけでなく、ファイル(タイトルに関連するデータを含むJSON文字列を受信できるようにしたいです、説明など)。

私はMultipartFileが自分自身で動作するようにアップロードすることができます。私はJSON文字列を受け取ってそれを単独で解析することができますが、1つのコントローラで一緒に使用すると失敗します。私はString campaignJsonをプリントアウトするたびに、それは(それが正しいJSON形式でだ、私は角に送信されたデータを印刷するとき。)の代わりに私が送信していたデータの[object Object]を言う私が試した

@RequestBody@RequestParam@RequestPartしかし、役に立たない。

私の質問は、1つのSpringコントローラでMultipartFileとデータをJSON形式で受け取るにはどうすればよいですか?

答えて

0

これが私の仕事:

@RequestMapping(value = "/{id}/upload", method = RequestMethod.PUT) 
public DocumentResource uploadPut(@PathVariable("id") Long id, 
     MultipartHttpServletRequest request, 
     HttpServletResponse response) { 

     String next = request.getFileNames().next(); 
     MultipartFile file = request.getFile(next); 
     ..... 
} 

編集:MultipartHttpServletRequestを使用して が他の@PathVariablesまたは@RequestParamsを使用するには、どのような方法であなたを制限するべきではありませんので、タイトルと説明を渡すことは可能なはずですが。

私はこの

var uploader = new FileUploader({ 
     url: config.apiUrl('/machine/' + $scope.id + '/images/'), 
     method: "post", 
     queueLimit: maxFiles 
    }); 
+0

その上でアップロードのために働くfile' '@RequestParam( "ファイル")MultipartFileようAngularJSで複数の画像をアップロードするためにそれを使用してFileUploader

angular-file-upload v1.1.5

自分の。あなたのアプローチは、メディア形式のデータだけでなく、メディアのアップロードにも使えますか?たとえば、 'MultipartFile'としてビデオをアップロードし、ビデオにタイトルと説明を付ける場合、' MultipartHttpServletRequest'を解析することで、ビデオとタイトル/記述、その他のフィールドを取得できます。ユーザー入力? –