当前位置: 首页 > 知识库问答 >
问题:

带有@RequestBody的Spring多部分文件

袁炳
2023-03-14

我正在尝试将数据从应用程序上传到Spring后端服务。要上传的内容是一个DataModel,其中包含要创建的对象的数据和链接到数据的几个图像。因此,我使用此方法签名:

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

我尝试使用注释,但要么得到一个空白的图像数组,要么助手为空。你将如何解决这个问题?

提前谢谢。

共有2个答案

罗安和
2023-03-14

请参见为我工作的客户端代码示例图像是我要保存的文件列表

var formData=新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"
}));
汝繁
2023-03-14

我发现,此方法签名可以完成以下工作:

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

在我的例子中,重要的是在客户端应用程序中设置MimeType。文件MimeType应该是image/jpgSurveyPostHelpers到Application/json以允许Spring解析json并将其绑定到我的Object。

 类似资料:
  • 我目前正在尝试上传一个文件从一个Angular 4前端到一个spring Webflux控制器。控制器能够读取@RequestPart值,但抛出415 UnsupportedMediaTypeStatusException。 上载控制器 log.info()方法没有执行,因此似乎是在执行该方法之前抛出了错误。 错误信息 spring Webflux应该使用org.synchronoss.cloud

  • 我正在设置RestController以接收一个json,其中包含另一个json(我现在不知道第二个json的结构)。。。比如: 我的请求类是这样的: 但是当我调用我的控制器时,

  • 问题内容: 我想使用Spring MVC发布带有一些JSON数据的文件。因此,我开发了一项休息服务 当我从其他客户端发送请求时 ,出现下一个异常: 谁能帮助我解决这个问题? 我可以同时将Multipart和JSON发送到服务器吗? 问题答案: 这就是我使用JSON数据实现Spring MVC Multipart Request的方式。 带有JSON数据的分段请求(也称为混合分段): 基于Sprin

  • 问题内容: 我的方法中有一个带注释的参数,如下所示: 然后在同一个控制器中有一个带注释的方法: 我没有跑步。但是我的方法是。因此,它不会将我的表单映射到转义编辑器。读完此线程后,这似乎是正确的(似乎不受的支持) 我测试了映射字符串,然后我的编辑器正在工作。 这在我的应用程序中很重要,因为我的大多数绑定都是用它完成的,如果我可以对它应用一些自定义绑定,那就太好了。 解决此问题的最常用方法是什么?并转

  • 在我正在开发的React web应用程序中,有一个包含一些用户数据的文件上传部分。然而,当我试图上传文件时,服务器抛出以下错误。 组织。阿帕奇。公猫util。http。文件上传。FileUploadException:请求被拒绝,因为找不到多部分边界 反应侧 我的Spring Boot控制器如下所示。

  • 问题内容: 我正在将Spring MVC(3.0)与注释驱动的控制器一起使用。我想为资源创建REST-FUL网址,而且能够 不 要求(但仍可选允许)的URL的末尾文件扩展名(但如果没有扩展假设HTML内容类型)。只要文件名部分中没有点(句点/句号),它就可以与Spring MVC一起使用。 但是,我的某些URL要求名称中带有点的标识符。例如: 在这种情况下,Spring会为扩展寻找内容类型,但没有