欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 记录一下在原有的接口中增加文件上传☞@RequestPart

记录一下在原有的接口中增加文件上传☞@RequestPart

2024/11/19 8:41:39 来源:https://blog.csdn.net/xhuiting/article/details/143855840  浏览:    关键词:记录一下在原有的接口中增加文件上传☞@RequestPart

首先,咱声明一下:

@RequestBody和 MultipartFile 不可以 同时使用!!!

因为这两者预期的请求内容类型不同。@RequestBody 预期请求的 Content-Type 是 application/json 或 application/xml,而 MultipartFile 预期的是 multipart/form-data

现在的场景是这样的:

        1. 一种是既有其他字段,又有文件上传;

        2. 另一种是需求原来没有文件上传,我们用 @RequestBody 接收入参,后来需求改了,在原有的表单中增加了上传文件。这种情况下怎么弄呢?

解决方法:

       第一种,直接用 @RequestParam 逐个接收对应的字段:

@PostMapping("/add")public ResponseVO add( @RequestParam(required = false) Integer idBiz,@RequestParam Integer idConnLink,@RequestParam String idPlatform,@RequestParam Date approveTime,@RequestParam String approveNo,@RequestParam(required = false) MultipartFile approveMaterial,@RequestParam Date registerTime,@RequestParam(required = false) MultipartFile  topologyMap,@RequestParam(required = false)    Long deviceId) throws IOException {......
}

第二种,@RequestPart可以同时处理普通参数和Multipart文件,允许在一个方法中处理多种类型的参数。所以用它来接收JSON和FILE 简直是再合适不过了。

 /*** 新增/更新* @param bo* @return* @throws BaseException*/@RequestMapping(value = "/update", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)public ResponseVO update(@RequestPart("bo") BusinessBaseInfoBO bo, @RequestPart(value = "file", required = false) MultipartFile file) throws BaseException, SQLException, IOException {if(file != null){String approveMaterialLast =file.getOriginalFilename();file.transferTo(new File(url+"/001/"+approveMaterialLast));bo.setApproveMaterials(file.getOriginalFilename());}......return new ResponseVO<>().success();}

在Apifox中自测的时候,需要注意Content-Type的选择:

当然除了上面常用的,还可以用Map接收再对应封装之类的其他方法。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com