SpringCloud下通过feign进行文件上传

在springclod项目下,通过feign的内部调用进行文件上传

和一般的feign调用会有一点点区别,主要是服务提供者(feign接口)的定义有些变化

Feign服务提供者

@FeignClient(
    value = AppConstant.APPLICATION_RESOURCE_NAME,
    fallback = IOssClientFallback.class
)
public interface IOssClient {
    String API_PREFIX = "/client";
    String PUT_FILE = API_PREFIX + "/put-file";

    /**
     * 上传文件
     *
     * @param file   资源编号
     * @param tenantId
     * @return R
     */
    @PostMapping(value = PUT_FILE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    @SneakyThrows
    R<Object> putFile(@RequestPart("file") MultipartFile file, @RequestParam("tenantId") String tenantId);

}

主要是@RequestMapping里面的consumes属性还有@RequestPart("file")

至于@RequestParam和@RequestPart的区别如下(摘抄至网络)

1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。

2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
3.@RequestParam也同样支持multipart/form-data请求。
4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。

心里有束光,眼里有片海
原文地址:https://www.cnblogs.com/xhy-shine/p/14513284.html