Spring Multipart File with @RequestBody

2019-05-14 13:52发布

I am trying to upload data from an app to a spring backend service. Things to upload are a DataModel containing data of the object to create and several images linked to the data. Therefore I am using this method signature:

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public Survey createSurvey(@RequestBody SurveyPostHelper helper, @RequestParam(value="file", required = true) MultipartFile[] images)

I tried to play with the annotations, but either I get a blank images array or my helper is empty. How would you solve this?

Thanks in advance.

2条回答
狗以群分
2楼-- · 2019-05-14 14:40

I found out, that this method signature could do the job:

@ResponseBody
public Survey createSurvey(@RequestPart(required=true) SurveyPostHelper helper, @RequestPart(value="file", required = true) final MultipartFile[] images)

Important in my case was to set the MimeType in the client app. The files MimeType should be image/jpg and the SurveyPostHelpers to application/json to allow Spring to parse the json and bind it to my Object.

查看更多
Fickle 薄情
3楼-- · 2019-05-14 14:55

see an example of the client code working for me images is the list of files I want to save

var formData = new FormData();

for (var i = 0; i < images.length ; i++) {
  formData.append('images', images[i]);
}

formData.append('adData', new Blob([JSON.stringify(adData)], {
    type: "application/json"
}));
查看更多
登录 后发表回答