Spring Multipart File与@RequestBody

8

我正在尝试从应用程序上传数据到Spring后端服务。需要上传的内容是一个包含要创建对象的数据和多个与数据相关联的图像的DataModel。因此,我正在使用以下方法签名:

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

我试图使用注释来操作,但是我的图片数组会变成空的,或者我的助手是空的。你如何解决这个问题?

提前感谢。


2
你能提供一个用于上传图片的代码吗? - pezetem
我使用Alamofire实现了这个,但是与此同时我已经解决了它。感谢您的时间。 - Yannick Wiesner
2个回答

13

我发现,这个方法的签名可以完成任务:

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

在我的情况下,重要的是在客户端应用程序中设置MimeType。文件MimeType应该是image/jpg,而SurveyPostHelper的MimeType应该是application/json,以允许Spring解析json并将其绑定到我的对象。


1
请问您能展示一下您的客户端应用程序吗?您是使用Ajax发送它吗? - kavain
我正在使用Alamofire库从iOS应用程序发送请求。它使用多部分POST请求上传多个图像和JSON对象。这也可以通过AJAX实现。 - Yannick Wiesner

3

以下是我想要保存的文件列表的客户端代码示例:

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"
}));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接