SpringCloud FeignClinet 远程调用文件类型解决方案

现有两个项目 需要A项目调用B项目中某个的接口

B项目的接口具体内容


@PostMapping(ConstantURI.IMAGET_URI)
public Result<FileUploadResp> imageFileupload(@RequestParam("file") MultipartFile file,
                                              @RequestParam("type") @NotBlank(message = "类型不能为空") String type,
                                              @RequestParam("id") @NotBlank(message = "上传者id不能为空") String id) {
        return fileUploadService.imageFileupload(file, type, id);
    }

A项目接口远程调用

consumes: 指定处理请求的提交内容类型
@RequestPart这个注解用在multipart/form-data表单提交请求的方法上
必须带上不然调B项目接口会报500

@FeignClient(name = "com.项目名称")
public interface ImageApi {

    @RequestMapping(method = {RequestMethod.POST}, path = "/v1/fileupload/image" ,consumes = MediaType.MULTIPART_FORM_DATA_VALUE )
//     @PostMapping(value ="/v1/fileupload/image",consumes ="multipart/form-data" )
    Result<FileUploadResp> getImageList(@RequestPart(value = "file") MultipartFile file,
                                              @RequestParam(value = "type") @NotBlank(message = "类型不能为空") String type,
                                              @RequestParam(value = "id") @NotBlank(message = "上传者id不能为空") String id);
}

重点部分
将File转换成MultipartFile 因为MultipartFile是前端传的值 与后端File属性不同 需要强转

如果转换不成功调用B项目接口时会报400的错(我遇到的情况)

1.引用依赖

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-mock</artifactId>
            <version>2.0.8</version>
        </dependency>

2.强转代码

File file = new File("xxxxxxxxxx");
FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile =new MockMultipartFile("file", file.getName(), "text/plain", input);

3.调用

     Result<FileUploadResp> resp=imageApi.getImageList(multipartFile,"user",id);

总结 远程调用 入参是MultipartFile的时候 注意两点 1.请求头不能忘 2.File需要正确强转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值