2017-06-14 12 views
0

以下のフォーマットでマルチパートリクエストを処理するアプリケーションがあります。マルチパートリクエスト

POST .... HTTP/1.1 
. . . 
Accept:multipart/form-data 
... 
---boundary123 Content-type:application/octet-stream content-Disposition: 
form-data filenale="payload.txt" name="someuniquename" 
... 
[paylaod content](this is in xml format) 
---boundary123 content-type:application/json content-Disposition:form-data 
name="someuniquname1" 
{ 
... 
ID:"999" 
} 

--- boundary123

、ここでは私の私のコントローラ部です。

@Restcontroller 
Class A{ 
@RequestMapping(value = "https://stackoverflow.com/a/b/c", method = RequestMethod.POST, consumes= 
MediaType.MULTIPART_FORM_DATA_VALUE, 
produces=MediaType.APPLICATION_JSON_VALUE) 

public @ResponseBody static void MyController(@RequestParam("file") 
List<MultipartFile> files) { 
} 

は、私は単一のマルチパートfile.Ifを受けていた場合、このコントローラは、あなたが同じのため、コントローラのフォーマットをお勧めできないコンテンツタイプ(XMLとJSON、順不同)を識別することにより、両方の部分を解析することができますです。

答えて

0

使用。

RequestMapping(value = "/yourPath", method = RequestMethod.POST) 
public @ResponseBody Object upload(MultipartHttpServletRequest request, HttpServletResponse response) throws IOException { 
    //Get your form fields... 
    final String ID= request.getParameter('ID'); 
    //and so on...... 

    //Get your files. 
    Iterator<String> iterator = request.getFileNames(); 
    MultipartFile multipartFile = null; 
    while (iterator.hasNext()) { 
     multipartFile = request.getFile(iterator.next()); 
     //do something with the file..... 
    } 
} 
+0

リクエストとレスポンスには何が含まれていますか? – phalco

+0

ご協力いただきありがとうございます。私の場合はレスポンスパラメータは必要ありません。 – phalco

0

RequestPartアノテーションで boundry一部を使用することですこれを達成する方法:お使いのコントローラでいるFormDataを取得するには、次の

@Restcontroller 
Class A { 

    @RequestMapping(
      value = "https://stackoverflow.com/a/b/c", 
      method = RequestMethod.POST, 
      consumes = MediaType.MULTIPART_FORM_DATA_VALUE, 
      produces = MediaType.APPLICATION_JSON_VALUE 
    ) 
    public @ResponseBody void myController(@RequestPart("someuniquname") SomePojo xmlPart, @RequestPart("someuniquname1") SomeOtherPojo jsonPart) { 
     // ... 
    } 
// ... 
} 
+0

その2パラメータを受け取り、私はまた@RequestPartを2つのMIME添付ファイルでのみ1マルチパートファイルを送信していますが、これは本当にうまくいくと思うanything.Do(「someuniqname」)の名前があることだろうか? – phalco

関連する問題