2017-06-14 170 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) { 
} 

是該控制器可以通過識別,如果我接受了單一的多部分文件。如果沒有您能否提供控制器的格式相同的內容類型(XML和JSON,沒有順序)解析兩個部分。

回答

0

使用以下命令獲取FORMDATA在您的控制器。

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 方式:

@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

它需要雙方的努力參數,我只發送1多文件有兩個MIME附件,也@RequestPart(「someuniqname」)名稱可能是anything.Do你覺得這真的有效? – phalco