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

如何在Spring Boot中使用json值发送多部分表单数据

叶书
2023-03-14

您好,我想向邮递员发送一个带有json的正文和一个formd数据中的图像。。。

我将表单数据图像保存在s3桶中,实体具有作为图像链接的字符串属性

这里是我的spring boot控制器

@PostMapping(consumes = { "multipart/mixed", "multipart/form-data" }, produces = MediaType.APPLICATION_JSON_VALUE)
    public CharacterResponse createCharacter(@Valid @RequestBody CharacterRequest characterRequest, @RequestParam(value = "file", required = false) MultipartFile file) {
        CharacterDto characterDto = mapper.map(characterRequest, CharacterDto.class);
        CharacterDto createdCharacter = characterService.createCharacter(characterDto, file);
        return mapper.map(createdCharacter, CharacterResponse.class);
    }

我已经用@RequestParam和@RequestPart尝试了多部分文件。。。我收到以下错误:

"不支持内容类型'multipart/form-data;边界=--------------------------340232294957024834187036;字符集=UTF-8'"

共有2个答案

双俊人
2023-03-14

只需对这两个参数使用RequestParam就可以了。

@PostMapping("/api/path")
public CharacterResponse createCharacter(@Valid @RequestParam CharacterRequest characterRequest, @RequestParam(required = false) MultipartFile file) {
    CharacterDto characterDto = mapper.map(characterRequest, CharacterDto.class);
    CharacterDto createdCharacter = characterService.createCharacter(characterDto, file);
    return mapper.map(createdCharacter, CharacterResponse.class);
}
吴驰
2023-03-14

在我看来,你可以试试这个:

方法属性中使用带有值的@Request estPart。此外,您应该在客户端中使用相同的结构(例如。在postman中为每个部分显式设置内容类型,自动内容类型并不完美。对于键,您应该使用@Request estPart中的值,而在值中只需放置您的有效负载)

@PostMapping(consumes={ MediaType.MULTIPART_FORM_DATA_VALUE }, 
produces=MediaType.APPLICATION_JSON_VALUE)
public CharacterResponse createCharacter(
    @Valid @RequestPart("body") CharacterRequest characterRequest,
    @RequestPart(value="file", required=false) MultipartFile file)
{
    //code
}
 类似资料:
  • 不管怎么说,所有的想法和答案都是极其赞赏的。谢谢你的帮助。

  • 我正在尝试用RestTemplate上传一个文件到带有Jetty的Raspberry Pi。在Pi上有一个运行的servlet: 这是我得到的输出: UI-elements.html已上传! org.springframework.web.multipart.support.StandardMultipartTtpServletRequest$StandardMultipartFile@47e76

  • 我有一个REST api,它接受嵌套json的数据,包括多部分文件 在通过postman测试REST api时,我遇到了问题。 我不知道如何发送我需要的各种类型的数据——多部分/表单数据文件和嵌套的json。 我在其他项目中分别使用了REST,但我无法将它们合并到一个请求中。 要使用多部分/表单数据,我必须在正文中选择表单数据,然后从键字段的下拉列表中选择文件,单击值字段上的选择文件按钮,然后选择

  • 我已经创建了一个使用“多部分/表单数据”的控制器 采样器请求对象 现在,我将尝试使用模拟MVC测试它,但我不知道如何将“多部分/表单数据”作为内容传递。我看到很多使用JSON的示例,但没有使用多部分/表单数据 有没有一种方法可以完成我的请求与多部分/form_data?理想情况下,它需要在MockHttpServletRequest的主体中

  • 这是在服务器端作为接收的内容: 如何转换multipart Confont数据类型中的文章对象?我读到改造可能允许使用转换器为这个。就我对文档的理解而言,它应该是实现的东西。 多部分部件使用的转换器,或者它们可以实现来处理自己的序列化。 null

  • 当我点击这个api时,我得到错误“415:Unsupported Media type”,这意味着不受支持的头。我想将文件从ARC加载到控制器。 我在pom.xml文件中添加了一些maven依赖项。 我的pom文件: