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

如何在spring中同时发送@RequestBody和@RequestPart

濮阳俊明
2023-03-14

我想使用curl在控制器中一起传递json和文件。我在控制器中有以下方法。

@PostMapping(value = /api/campaign, headers = {"content-type=multipart/mixed","content-type=multipart/form-data"})
    @ResponseBody
    @ResponseStatus(HttpStatus.CREATED)
    public @Valid ResponseDTO campaignCreator (@Valid @RequestBody CampaignCreatorDTO campaignCreatorDTO, @RequestPart("file") MultipartFile adGraphic){
}

下面是curl命令

curl -i -X POST -H "Content-Type: multipart/mixed" -d "campaignCreatorDTO={\"edipi\":123456789,\"firstName\":\"John\",\"lastName\":\"Smith\",\"email\":\"john.smith@gmail.com\"};type=application/json" -F "file=@newfile.png;type=image/png"  http://localhost:8080/api/campaign
@PostMapping(value = /api/campaign, consumes = {"multipart/form-data","multipart/mixed"})
    @ResponseBody
    @ResponseStatus(HttpStatus.CREATED)
    public @Valid ResponseDTO campaignCreator (@Valid @RequestPart("json") CampaignCreatorDTO campaignCreatorDTO, @RequestPart("file") MultipartFile adGraphic) {
}

使用JSON的Spring MVC多部分请求

这就是客户机如何将数据Paasting到服务器

let formData = new FormData()

const blob = new Blob([json], {
type: 'application/json'
});

formData.append("json", blob)
formData.append("file", values.adCreativeImageCover)

let authToken = sessionStorage.getItem("authToken")

fetch(/api/campaign, {
method: "POST",
headers: {
'Accept': 'application/json',
'X-Auth-Token': authToken,
},
mode: 'cors',
body: formData
})

共有1个答案

梅欣然
2023-03-14

我通过在配置中实现multipartresolver解决了这个问题。

@Bean
    public MultipartResolver multipartResolver() {
        return new StandardServletMultipartResolver();
    }
 类似资料:
  • 我正在Spring-Boot中实现微服务。我尝试将@RequestBody与一个MultipartFile一起发送。我在stackoverflow中引用了一些问题,但没有任何帮助。 视频类 方法 我只是试着用@requestpart,并附上我如何请求的屏幕截图 错误为

  • 我使用的是Spring-MVC3.1.0.版本,由于某种原因,将POST与查询params和请求body进行映射是不起作用的。 下面是我的控制器方法的外观: 但是,如果我将所有请求参数转换为路径参数,映射就会起作用。有人遇到过类似的事情吗? 谢了!

  • 如何区分未发送的值和空值?如何检测客户端是否发送了空字段或跳过字段?

  • 问题内容: 我正在使用Spring Boot 1.4.1,其中包括。我有一个带有注释的类和带有注释的方法,用于处理服务代码引发的异常。处理这些异常时,我想记录和POST操作请求的一部分,因此我可以看到导致问题的请求正文,在我看来,该问题对于诊断至关重要。 在Spring Docs中,方法的方法签名可以包括多种内容。通常可以从此处通过或获取请求正文,但是如果我的控制器方法像我的所有方法一样解析请求正

  • 我使用的是Spring Boot1.4.1,其中包括Spring-Web-4.3.3。我有一个用注释的类和用注释的方法,以处理服务代码引发的异常。在处理这些异常时,我希望记录作为PUT和POST操作请求的一部分的,这样我就可以看到导致问题的请求体,在我的情况下,这对于诊断至关重要。 在每个Spring文档中,方法的方法签名可以包括各种内容,包括。请求正文通常可以从这里通过或获得,但是如果我的控制器

  • 看起来在这个话题上有一些问题,但许多问题现在已经过时,或者问的是不同的问题。 例如,我想做 我不想在 我有一个方法签名,它同时接受请求参数和请求主体(它是Kotlin,但我不认为这实际上有什么不同)。 我可以很好地访问RequestParam,但是RequestBody包含的不仅仅是我在body中发送的JSON,它包含了body和请求参数的合并。在上面的示例中,它将为body绑定输出以下内容 有没