Spring Cloud Feign 的文件上传实现
2018-12-11 17:30
861 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_36542570/article/details/84958716
Spring Cloud Feign 的文件上传实现
今天写一个上传文件的接口,由于对外开放需要套一层api服务,这就需要通过feign实现api服务调用app服务。
Feign官方提供了上传子项目, "feign-form "。其中就实现了我们所需要的Encoder。
1.首先需要在Fegin组件中添加依赖,使Feign能实现Form表单提交
[code]<dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form-spring</artifactId> <version>3.0.3</version> </dependency>
2.FeignClient
如代码所示,在这个Feign Client中,我们引用了配置类 MultipartSupportConfig ,在 MultipartSupportConfig 中,实例化 SpringFormEncoder。
[code] import com.arjr.core.postLoan.service.impl.RemotePostLoanServiceFailImpl; import com.arjr.core.service.common.FeignClientNames; import feign.codec.Encoder; import feign.form.spring.SpringFormEncoder; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.multipart.MultipartFile; /** * Created by lianjietong * 2018/12/10 0010. */ @FeignClient(name = FeignClientNames.CREDIT_APP_SERVICE,fallback = RemotePostLoanServiceFailImpl.class) public interface RemotePostLoanService { @RequestMapping(value="/postLoan/inputDisburseList",method= RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) void inputDisburseList(@RequestPart(name = "file", required = false) MultipartFile file); /** * 引用配置类MultipartSupportConfig.并且实例化 */ @Configuration class MultipartSupportConfig { @Bean public Encoder feignFormEncoder() { return new SpringFormEncoder(); } } }
注意:必须是 @RequestPart(name = "file") 而不能是@RequestParam
---------------------
@RequestPart 和 @RequestParam区别
1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
3.@RequestParam也同样支持multipart/form-data请求。
4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。
---------------------
3.CREDIT_APP_SERVICE
[code]@Slf4j @RestController @RequestMapping("/postLoan") @Api( value = "XXX",tags = {"XXX"}) public class PostLoanController { @Autowired CreditManagerConfig creditManagerConfig; @RequestMapping(value="/inputDisburseList",method= RequestMethod.POST) @ApiOperation("XXX") public void inputDisburseList(@RequestParam(name = "file", required = false) MultipartFile file) { log.info("inputDisburseList start ..."); // 上传到服务器 try { String date = new DateTime().toString("yyyyMMddHHmmss"); String name = date.concat(file.getOriginalFilename()); BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(new File(creditManagerConfig.getTempFileDir().concat(File.separator),name))); out.write(file.getBytes()); out.flush(); out.close(); } catch (IOException e) { log.warn("XXX:{}",file.getOriginalFilename()); throw new ApiException(ErrorCodeEnum.serverError,"upload exception"); } } }
相关文章推荐
- Spring Cloud Feign Client 实现MultipartFile上传文件功能
- spring cloud feign 多文件上传实现
- Spring Cloud Feign Client 实现MultipartFile上传文件功能
- SpringCloud yml 配置feign整合FtpClient连接池实现文件上传下载微服务
- Spring Cloud Feign的文件上传实现
- Spring Cloud Feign的文件上传实现的示例代码
- 使用Spring Cloud Feign上传文件的示例
- spring cloud feign接口上传文件
- spring cloud feign 上传文件报not a type supported by this encoder解决方案
- 使用Spring Cloud Feign上传文件
- Spring Cloud中FeignClient添加上传文件功能
- spring cloud feign 上传文件
- Spring Cloud Feign(1.5.9) 进行文件上传
- SpringCloud FeignClinet 不支持文件上传的终极解决方案,记得点赞哦
- spring cloud feign实现远程调用服务传输文件的方法
- Spring Cloud中FeignClient支持上传文件的同时提交表单数据
- spring cloud之利用zuul实现文件上传(十)
- Spring MVC+Maven 轻松实现上传文件功能
- SpringMVC+BUI实现文件上传(附详解,源码下载)
- 如何用spring集成mongodb实现文件上传