将文件和JSON数据发布到Spring休息服务

Ana*_*and 5 java rest spring json multipartform-data

我正在构建一个Spring rest服务来上传文件.有一个表单由各种字段和一个字段组成,用于上传文件.在提交这种形式,我送一个,即多形式要求Content-Type作为multipart/form-data.

所以我尝试了以下

@RequestMapping(value = "/companies", method = RequestMethod.POST)
    public void createCompany(@RequestBody CompanyDTO companyDTO, @RequestParam(value = "image", required = false) MultipartFile image){
.................   
Run Code Online (Sandbox Code Playgroud)

但是,上述方法无效.所以暂时,我将JSON数据作为String发送,并在休息服务中从该String形成公司对象

 @RequestMapping(value = "/companies", method = RequestMethod.POST)
        public void createCompany(@RequestParam("companyJson") String companyJson, @RequestParam(value = "image",required = false) MultipartFile image) throws JsonParseException, JsonMappingException, IOException{
            CompanyDTO companyDTO =  new ObjectMapper().readValue(companyJson, CompanyDTO.class);
.............................
Run Code Online (Sandbox Code Playgroud)

我不能在不将JSON作为String传递的情况下使用@RequestBody发送JSON数据吗?

小智 0

将值附加到 URL,这就是您现在使用 @RequestParam 所做的事情。

@RequestParam 注释不适用于复杂的 JSON 对象,它指定为 Integer 或 String 。

如果是Http POST方法,使用@RequestBody将使Spring将传入的请求映射到您创建的POJO(条件:如果POJO映射传入的JSON)