Anj*_*ali 5 spring curl spring-mvc spring-boot
我想使用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){
}
Run Code Online (Sandbox Code Playgroud)
下面是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
Run Code Online (Sandbox Code Playgroud)
控制器方法没有被调用。当我将 json 放入文件中并在curl 命令中使用 file 代替直接 json 时,它可以工作。但我不想使用 json 文件。
我尝试对 json 对象使用 @RequestPart 但同样的问题。
有没有办法在 json 中传递多部分文件(我的意思是 CampaignCreatorDTO 对象)?
更新:: 现在我可以为这两种类型传递 RequestPart,但图像大小即将达到 0 字节。尽管 iamge 存在于文件系统中。
更新代码 :: 现在使用下面的代码,并将文件大小设置为 0 字节。
@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) {
}
Run Code Online (Sandbox Code Playgroud)
我尝试了此链接中给出的解决方案,但仍然存在同样的问题
这就是客户端将数据传递到服务器的方式
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
})
Run Code Online (Sandbox Code Playgroud)
Anj*_*ali -1
我通过在配置中实现 multipartresolver 解决了这个问题。
@Bean
public MultipartResolver multipartResolver() {
return new StandardServletMultipartResolver();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17103 次 |
| 最近记录: |