自学内容网 自学内容网

记录一下在原有的接口中增加文件上传☞@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接收再对应封装之类的其他方法。


原文地址:https://blog.csdn.net/xhuiting/article/details/143855840

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!