繁体   English   中英

如何在 Spring 引导中发送具有 json 值的多部分表单数据

[英]How to send multipart form data with json value in Spring Boot

您好,我想向 postman 发送带有 json 的主体和形成数据中的图像...

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

这里我的 spring 启动 controller

@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 的 MultiPartFile ...我收到此错误:

“内容类型 'multipart/form-data;boundary=--------------------------340232294957024834187036;charset=UTF-8' 不支持”

从我的角度来看,你可以试试这个:

在方法属性中使用带有值的@RequestPart。 而且您还应该在您的客户端中使用相同的结构(例如,在 postman 中,您应该明确设置每个部分的内容类型,自动内容类型并不完美。对于键,您应该使用来自 @RequestPart 的值,而在值中只是把你的有效载荷)

@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
}

只需将@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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM