Spring Cloud Zuul现在对于上传文件有两种处理方式,一种是用spring mvc,另一种是zuulServlet。spring mvc对文件处理不是很好,会导致乱码问题,zuulServlet则不会。

那么怎么样让文件使用zuulServlet方式上传呢?现在普遍的解决方案是给url加上 /zuul的前缀,这确实是正确的,因为加了之后过滤器会使用zuulServlet。

关于过滤器的知识,下面这个链接解释的挺详细了
http://blog.didispace.com/spr...

在过滤器中,有一个pre的过滤器 ServletDetectionFilter,他的执行顺序是-3,也是最先执行的过滤器,在这个过滤器中,有这么一段代码:

@Override
public Object run() {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();if (!(request instanceof HttpServletRequestWrapper) && isDispatcherServletRequest(request)) {ctx.set(IS_DISPATCHER_SERVLET_REQUEST_KEY, true);} else {ctx.set(IS_DISPATCHER_SERVLET_REQUEST_KEY, false);}return null;
}

在这个方法中,IS_DISPATCHER_SERVLET_REQUEST_KEY为false就会用ZuulServlet处理。如果没加/zuul前缀,IS_DISPATCHER_SERVLET_REQUEST_KEY就会置为true,就会用spring mvc上传。会出现乱码问题。

那么我们的一个解决方案是在在进入下一个过滤器之前我们就把我们的文件上传的请求用ZuulServlet处理,所以我们可以重写这个方法,根据contentType判断请求如果是multipart就将IS_DISPATCHER_SERVLET_REQUEST_KEY置为false,那么它就会用ZuulServlet处理。

到这里还没有结束,还有一个很坑的地方,在最后以前pre过滤器中,他会对url进行处理。如果该请求是ZuulServlet处理的,那么他会把url的前面几位用的zuulServletPath替代,zuulServletPath默认就是刚才我们替代的前缀 /zuul。那么如果你不处理的话,你的请求路径将会变化。所以在这里我们将这个默认的zuulServletPath改成空值,就不会替换啦。在配置文件里面加上:
zuul.servletPath:
后面的值不填。
到这里,问题算是结束了,最后把我们重写的那个方法注入到spring。

关于Spring Cloud Zuul网管上传文件乱码问题相关推荐

  1. php 蓝奏网盘上传文件,教给大家一个蓝奏云高级玩法,如何把文件一键秒上传到蓝奏云网盘...

    01 蓝奏云是我最常用的网盘平台 当然这也是在度盘限速之后 毕竟,蓝奏也有几个很大的短板 但整体上是利大于弊! 好处就是,整个网盘空间没有上限 不论你上传多少个文件.他都不拦你 另外一点,下载永远都是 ...

  2. php 蓝奏网盘上传文件,蓝奏云盘客户端v2.6 支持文件夹和大文件上传了

    首先来份哈勃检测:https://habo.qq.com/file/showdetail?pk=ADcGZ11vB28IOVs6U2U%3D 软件MD5:5bb1f50860b2e626ccda17e ...

  3. 动网论坛 上传文件类型

    后台--版面(分类)添加管理--高级设置--发贴相关(顶部)--上传文件类型,这里添加你要的后续名即可

  4. rz命令上传文件乱码,无关be参数

    如果你上传你的jar包到服务器发现出现乱码导致无法上传的问题,一般都是两个原因: 1.未加be参数,一般使用rz -bey命令上传就可以解决. 2.如果按照上面的方式还是没办法解决的话,就要判断你的文 ...

  5. XShell使用rz上传文件 乱码

    1. 原因 当使用XShell的rz上传时,有时会出现乱码的情况,导致这种情况出现的原因是,rz对文件进行了读取和解析,因此解决方案就是需要阻止其进行读取和解析. 2. 解决方案 使用 rz -be ...

  6. Linux使用rz命令上传文件乱码

    通过rz命令上传文件,出现乱码的问题,报waiting to receive,两种遇到的情况.一:有可能是上传目录权限的问题:二:有可能是文件中包含一些转移等特殊字符 解决办法: 目录权限问题:使用r ...

  7. 百度网盘上传文件超过4G,只需一个工具即可免费上传

    问题: 原理:通过BitComet工具,转换文件格式使其尺寸变小 一.安装BitComet工具(中文叫:比特彗星) 安装包(便捷下载通道):https://wwa.lanzous.com/iyTvrd ...

  8. tp5 上传文件乱码问题

    window下乱码处理 在原文件File类中,修改在代码move方法中306行 $saveName = this−>buildSaveName(this->buildSaveName(th ...

  9. 解决麒麟V10上传文件乱码问题

    在开发过程中遇到这样一件事,把文件从Windows电脑上传到麒麟系统后,用文本编辑器打开,发现竟然是一堆乱码.几经查证之后发发现,原来湖南麒麟10的默认字体是西欧字体,怪不得呢,按照以下方式做调整即可 ...

最新文章

  1. Docker系列 八.Docker下 Mysql 启动慢查询日志
  2. 搭建自己的前端自动化测试脚手架(一)
  3. nginx日志自动切割
  4. 预测2019:数据中心将有哪些变化
  5. SQL char字段类型排序
  6. 《SAS编程与数据挖掘商业案例》学习笔记之八
  7. 学成在线--4.CMS页面管理开发(新增页面)
  8. IBM研究院计画5年改变人类生活创新预测
  9. 利用MMCM IP核产生用户时钟
  10. scjp第一章学习总结
  11. 微软官方Power Query M语言规范参考手册(Power Query M function reference)
  12. ubantu上adb调试fastboot下载
  13. 【STM32训练—SIM900A模块】第二篇、STM32驱动SIM900A发送中文和英文短信
  14. Cellular Automaton UVA - 1386
  15. ThreatScan-免费的网站在线安全检测平台_TScan
  16. 比较好做的计算机毕设,大学几年快结束了,计算机毕设到底该怎么做?
  17. 面试经验|计算机网络面试相关知识
  18. Erlang读书笔记
  19. 关于STM32F105 双CAN口通信的一些学习心得
  20. vscode中用快捷键 Alt + Shift + F 格式化代码不生效的问题

热门文章

  1. 图普科技招聘有关深度学习的解题?
  2. ROS探索总结(十三)(十四)(十五)——导航与定位框架 move_base(路径规划) amcl(导航与定位)
  3. 在windows下运行Felzenszwalb的Deformable Part Model(DPM)源码voc-release3.1来训练自己的模型
  4. 程序员面试题精选100题(54)-C++/C#面试题(3)
  5. Day 26: TogetherJS —— 让我们一起来编程!
  6. 机器学习和计算机视觉有关的数学
  7. 【算法编程】斐波那契数列
  8. poj2104(划分树模板)
  9. webservice 之 Java CXF实战效果 RS WS(二)
  10. Nginx服务器之基础学习