做的一个上传excel功能,在本地环境测试没有问题,部署到开发和测试环境,生成的文件,获取文件名就会发现中文乱码

puma obs service prepared to uploadByInputStream file name = ?????????.xls

遇到中文乱码 我们自然想到用new String(fileName.getBytes("IOS-8859-1"),"utf-8"),这种方式去转码,然后前面说了,本地环境没有问题,那可以肯定不是代码的问题。

思考一下,本地和开发、测试环境的差异:本地是localhost请求,而另外两个环境走了网关,那可能是网关出了问题。

要验证这个问题,可以本地把网关服务和eureka服务起起来验证,这里不赘述了

最后发现这个问题是因为网关上的zuul服务版本较低所致,但是又不能轻易升级zuul的版本,万一影响其他业务得不偿失,可以考虑重写 ServletDetectionFilter

我们在网关层来解决这个问题

@Component
public class ServletDetectionFilterFile extends ServletDetectionFilter {@Overridepublic Object run() {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();if (!(request instanceof HttpServletRequestWrapper)&& this.isDispatcherServletRequest(request)&& !this.isMultipartContent(request)) {ctx.set("isDispatcherServletRequest", true);} else {ctx.set("isDispatcherServletRequest", false);}return null;}private boolean isDispatcherServletRequest(HttpServletRequest request) {return request.getAttribute(DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE) != null;}/*** 判断是否是multipart/form-data请求** @param request 请求* @return 是否是*/private boolean isMultipartContent(HttpServletRequest request) {String requesType = "post";if (!requesType.equals(request.getMethod().toLowerCase())) {return false;}//获取Content-TypeString contentType = request.getContentType();return (contentType != null) && (contentType.toLowerCase().startsWith("multipart/"));}}

&& !this.isMultipartContent(request)  加了一个自己的业务判断,如果是表单提交过来的post请求,并且是上传文件,走自己的zuul

还需要在application.yml添加配置

zuul:servletPath:

否则会报404

上传文件中文乱码问题修复相关推荐

  1. TP5 上传文件 中文乱码问题

    在原文件file类中找到move方法 因为保存的时候使用的是utf-8但是用于保存在硬盘上的目录需要使用的是gbk编码 所以需要转码, 返回文件名的时候 需要把gbk的编码转回utf8,不然可能会报错 ...

  2. java中ftp文件上传和中文乱码解决

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前几天 有个需求就是上传文件的时候,本地存一份,其他服务器也保存一份,于是就研究了一下,功能只实现了 ...

  3. python 中文姓名库,Python Requests库上传文件中文文件名处理方法是什么

    使用Python Requests库,提交POST请求上传文件,不支持中文文件名? 使用Python Requests库,向微信服务器上传媒体问题. 当使用英文文件名称,上传时,一切OK. 当下面代码 ...

  4. xshell文件传输乱码_在Xshell中使用rz命令上传文件出现乱码且文件无法删除的解决办法...

    有些时候,我们在使用rz命令上传文件失败或者不小心输入命令会产生乱码文件名,之后尝试使用rm 删除这些文件,无果:使用rm -rf强制删除,亦无果.是不是很好奇为什么如此强大的rm命令竟然删除不了这些 ...

  5. XShell 上传文件时 乱码问题

    使用XShell可以用rz.sz命令上下传文件在Linux 虚拟机 和 本地windows之间,但经常会上传一部分后退出并显示一堆乱码,这是因为这中间有控制字符的原因.解决方式是使用:rz -bey ...

  6. struts文件上传以及中文乱码问题

    Struts上传实现很简单,不需要自己用什么common_fileupload包,struts中用一个FormFile的接口用到了common_fileupload包的东西.在StrutsForm中只 ...

  7. 高德数据化可视平台数据上传后中文乱码解决方案之一---保证文件为UTF-8编码

    遇到的问题 在数据预览界面发现中文列出现了乱码,如下图红框所示.重新上传多次后依旧乱码 分析 打开上传数据常见问题界面,发现上传要求里写着需保证为UTF-8编码,我查看我上传源文件编码格式,发现的确不 ...

  8. svn钩子程序上传文件中文文件导致报错的处理办法

    2019独角兽企业重金招聘Python工程师标准>>> 报错信息 错误: post-commit hook failed (exit code 1) with output:   错 ...

  9. fckeditor php 不显示,PHP Fckeditor上传文件(或图片)中文显示为乱码的解决方法

    中文名乱码是因为: FCKeditor使用UTF-8编码, 自己机子比如是Windows系统 文件名使用的是GBK编码, 在上传中需要,改下编码,从UTF-8到GBK ==>第一个思路,转码思路 ...

  10. php+ajax上传文件

    直接上源代码 html页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" > ...

最新文章

  1. 解决微信二次分享失败--后面被加上from=singlemessageisappinstalled=0的解决方案
  2. 自己动手构建iSCSI磁盘阵列
  3. DevExpress v19.1新版亮点——WinForms篇(五)
  4. SpriteBuilder中关于大量CCB文件的数字命名建议
  5. 怎么固定串口号_工业交换机的背板带宽怎么计算?
  6. 前端每日实战:56# 视频演示如何用纯 CSS 描述程序员的生活
  7. Android Activity类讲解(一)
  8. 网管的自我修养-网络系统
  9. 2020年计算机一级B押题,2021年全国计算机一级选择题真题押题.doc
  10. python闭包的应用场景_Python闭包函数定义与用法分析
  11. 什么是大数据平台和大数据
  12. mock数据和代码生成
  13. ASP.NET简化编辑界面 V2
  14. 分布式作业 Elastic Job 如何动态调整?
  15. mac系统spss26软件下载及安装教程
  16. 思维导图怎么做计划的简单高效绘制方法
  17. STL(标准模板库)
  18. 谈谈创业公司给服务器放在云端的优势和缺陷
  19. MAC版Pycharm使用技巧
  20. iOS设备唯一标识符解决方案

热门文章

  1. 开源表单系统|Tduck填鸭表单docker部署详细教程
  2. linux中的bg命令作用,linux bg和fg命令
  3. 网络通信数据传输原理
  4. 计算机二级准考证下载打不开
  5. ubb码转换的java类库 ubb2html_asp ubb代码转换成html代码
  6. Activiti工作流Day18-Crystalball流程仿真
  7. 苹果核 - iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上...
  8. WeiPHP5.0 SQL注入漏洞2
  9. java swing实验_java实验报告Swing
  10. C语言项目-俄罗斯方块