文件上传 feigin_upload zuul

1. 单独的controller模块 功能是可以使用的

2. 加入负载均衡之后 文件上传出现问题
这里在负载均衡模块在进行请求转发的时候 实际上对原来的请求是做过处理的
原来的文件头 在这里已经被解析处理过 在此进行转发的时候 实际上是请求方法里面对应的参数重 新分装的请求头

如上图是实际的处理文件上传的方法声明以及对应的注解 (这里可以添加自定义头)此时单独使用是可以的正常的


这里是负载均衡对应的方法声明(这里使用的是fegin)下面是注意的点
1.在头部主注解(@FeginClient)里面必须添加 configuration这个属性 后面要添加对应的处理类
下面的这个是从网上找的 也可以自定拓展
引入对应的依赖
< dependency >
< groupId > io.github.openfeign.form </ groupId >
< artifactId > feign-form </ artifactId >
< version > 2.1.0 </ version >
</ dependency >
< dependency >
< groupId > io.github.openfeign.form </ groupId >
< artifactId > feign-form-spring </ artifactId >
< version > 2.1.0 </ version > </ dependency >
代码
@Configuration public class FeignMultipartSupportConfig {
@Bean
@Primary
@Scope ( "prototype" )
public Encoder multipartFormEncoder()
{ return new SpringFormEncoder(); }
@Bean public feign.Logger.Level multipartLoggerLevel()
{ return feign.Logger.Level.FULL; } }
引入这个配置类的原因是
普通的FeignClient远程调用代码。但是这样的实现,在去调用的时候一直抛异常: MissingServletRequestPartException,"Required request part  'file' is not present"
这里去跟踪:fileServerService.fileUpload(multipartFile, null, true)源码发现发送的url是将multipartFile以url的方式拼接在query string上。所以这样的调用肯定是不行的。
------------------------------from intenet
简单来说就是 :这里的请求已经被处理了 不在是浏览器的原生请求了 所以后台处理程序 不会接受处理的。
引入上面的配置 就是为了把请求头里面的文件部分(也可以适当添加别的参数 作为过滤与拦截)拿出来 还原成之前的那样 假装是浏览器发出来的(这样感觉麻烦 但是可以拿来做验证和文件过滤)

2. 这里的方法 文件file要使用@RequestPart 这个是浏览器发送文件的形式 tomcat在8之后 就是用part来处理文件的 这里应该是spring的借鉴 另外可以看到 后台处理文件的方法参数 和这里声明的方法的参数是不一致的,这是因为 后台处理的时候 是把fegin转发的请求 又当成是浏览器的请求重新解析了一遍 所以 fegin方法里传的东西 在这里会被重新解析 它也只能看到 fegin方法里面的参数的内容 别的都看不到 (所以在fegin里面的参数声明 要结合后台的需要 传入对应的参数)


以上总结 参考


这里有一个 git的项目
改天研究下


最后 zuul里面什么都不用配置我在上面的处理好之后 直接启动试了一下直接就ok了
网上说这个zuul里也要配置很多的东西 看来不用啊
哈哈

最后图片上传实在麻烦

http://note.youdao.com/noteshareid=199ba18e66e6f83ab6c4ca33a2c8d51f&sub=D41BD2F8506C411EAFA1AEB5775A0E27

这个和是有到笔记的原文 可以去看下点击打开链接




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍 【完善体系+精品资料】本课程总计115课时,打造全网最全的微服务体系课程;从微服务是什么、能够做什么开始讲起,绝对零基础入门到精通类型。课程整体脉络十分清晰,每个章节一个知识点,画图+源码+运行讲解,不信你学不会。1、课程先讲解了什么是单体架构、什么是微服务架构、他们之间有什么区别和联系,各自有什么优缺点。2、从本质入手,使用最简单的Spring Boot搭建微服务,让你认清微服务是一种思想和解决问题的手段,而不是新兴技术。3、讲解Spring Boot 与 Spring Cloud 微服务架构之间的联系,原生的RestTemplate工具,以及Actuator监控端点的使用。4、带着微服务所带来的各种优缺点,为大家引入服务发现与注册的概念和原理,从而引入我们的第一个注册中心服务Eureka。5、引入负载均衡的理念,区分什么是服务端负载均衡,什么是客户端负载均衡,进而引入Ribbon负载均衡组件的详细使用。6、为了解决微服务之间复杂的调用,降低代码的复杂度,我们引入了Feign声明式客户端,让你几行代码学习服务的远程调用。7、为了解决服务之间的稳定性,避免发生雪崩问题,我们引入了Hystrix断路器,服务降级和熔断机制。8、微服务集群十分庞大,监控起来是十分困难的,尤其是对每一个接口的熔断情况进行监控,因此我们引入了Turbine微服务监控。9、微服务的调用是杂乱无章的,可以网状调用,怎么做到统一的入口出口,统一的授权、加密、解密、日志过滤,我们引入了第一代网关Zuul。10、微服务的配置分散,每次要修改配置都要重启服务,因此我们引入了Config配置中心。11、跟上主流,Consul是当前主流的服务注册与发现、配置中心一体化的解决方案。12、阿里的Nacos服务注册与发现、配置中心在国内炙手可热,Nacos 经历过双十一的微服务中间件。13、Turbin做微服务监控还是太弱,我们需要更强大,可视化,操作性更强的监控系统,因此我引入了Spring Boot Admin体系。14、Zuul已经停止更新支持,Spring Cloud官方推荐的二代网关Spring Cloud Gateway更加强大。15、微服务的安全架构体系虽然复杂,但是是有学习条例的,什么是认证授权、什么是OAuth2.0的原理、 JWT、怎么样去开发实现。 课程资料 【独家资料】1、课程附带全部63个项目源码,其中Hoxton版本项目源码37个,Edgware版本项目26个,2、230页高清PDF正版课件。3、附带nacos、consul、cmder等视频配套软件。学习方法1、每一节课程均有代码,较好的方式为一边听我的讲解,一边使用我提供的项目代码进行观察和运行。2、课程体系庞大,但是并不杂乱,每个章节只针对一个知识点,减轻学习压力。3、坚持每天学习1~2个章节,可以在地铁、公交上用手机学习。【完善知识体系图】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值