2017-06-14 1 views
0

Ich habe eine Anwendung, die Multipart-Anfrage im unteren Format behandelt.Multi-Part-Anfrage

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

und hier ist mein mein Controller Teil.

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

Ist das Controller beiden Teile durch die Identifizierung Content-Type (xml und json, keine Ordnung), wenn ich mehrteilige file.If einzigen analysieren kann nicht empfange Können Sie Format des Controller für das gleiche.

Antwort

0

Verwendung im Anschluss an die Formdata in Ihrem Controller zu bekommen.

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

Was enthält Anfrage und Antwort? – phalco

+0

Vielen Dank für Ihre Hilfe, Response-Parameter ist in meinem Fall nicht erforderlich. – phalco

0

Die Art und Weise, dies zu erreichen, den Teil boundry Namen zu verwenden, wäre mit der RequestPart Anmerkung:

@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

Sein Takes 2 Parameter und ich bin nur ein mehrteiliger Datei mit zwei MIME-Anhängen und auch @RequestPart („someuniqname“) Name zu senden könnte anything.Do denken, dies funktioniert wirklich? – phalco