SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法

2018-03-17

最近在使用SpringCloud搭建微服务的过程中,发现上传文件经过Zuul网关转发的时候,回应为上传文件名中文乱码导致文件的写操作失败,从而导致文件上传失败,但是不经过Zuul转发的时候,文件上传正常,因此猜测是Zuul对上传的请求的编码进行了处理。最终在网上找到了两种解决方案:



方案一、在上传文件的请求路径之前添加字符串“zuul”声明此请求的编码不做处理。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23


/**

* 各种poi导入导出的请求控制模块;

*

* @author:JunZhou

* @Company:LongZheng

* @Email:[email protected]

* @2018年1月16日@下午4:28:49

*/

@RestController

@RequestMapping("/poi")

@ClazzNote(desc = "excel文件", resource = "input", modName = "poi")

public class POIController {

@RequestMapping("/uploadExcel")

@ServiceNote(desc = "上传考勤明细的excel", auth = ServiceNote.AUTH.CHECK)

public ResObject<ResponseMessage> singleFileUpload(MultipartHttpServletRequest request,

RedirectAttributes redirectAttributes, HttpServletResponse response) {

Integer stateCode = poiService.receiveUploadExcel(request, redirectAttributes, response);

//根据返回值确定响应信息实体;

ResponseMessage responseMessage = UploadStatusEnum.desicideUploadStatusBystateCode(stateCode, response);

//设置响应状态为200;

response.setStatus(UploadStatusEnum.UPLOAD_OK.getStateCode());

return new ResObject<ResponseMessage>(null,responseMessage);

}

例如在当前代码下,请求路径是:

localhost:9090/oss/poi/uploadExcel

那么采用方案一解决中文乱码的请求路径就是:

localhost:9090/zuul/oss/poi/uploadExcel

经过测试,中文乱码问题成功解决。



方案二:
在方案一的基础上,不仅要改动后端代码,前端代码也要变更,较为麻烦,
因此更简单的方案是在zuul的配置文件中添加一个如下的属性:


1

zuul.servlet-path=/

注意实在网关的配置文件中添加的,经过本人侧ishi,问题也成功解决了。

参考文章:
1、SpringCloud 上传文件,经过Zuul,中文文件名乱码解决办法

2、zuul proxy file upload, file name is Chinese garbled #1385

原文链接:https://junzhou2016.github.io/2018/03/17/SpringCloud%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%EF%BC%8C%E7%BB%8F%E8%BF%87Zuul%EF%BC%8C%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6%E5%90%8D%E4%B9%B1%E7%A0%81%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95%20/

原文地址:https://www.cnblogs.com/banmuyutian/p/11065983.html

时间: 2024-10-07 05:10:51

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法的相关文章

CuteFTP 9.0 上传文件时,中文文件名乱码

解决办法如图: 1.右键--->属性 2.选项---->档案名称编  选择ascⅡ

jQuery 关于IE9上传文件无法进入后台原因及解决办法(ajaxfileupload.js第四弹)

第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于<ajaxfileupload.js系列>的文章后提出的问题,由于自己一直是用chrome浏览器去测试demo,完全忽略IE浏览器(其实是故意的,懒得想浏览器兼容的问题,哈哈~),所以当我使用IE9去运行demo的时候,确实发现了同样的问题,就是ajax异步提交表单无法进入后台. 下面是解决整个问题的过程,以我在<jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹) >中上传的de

从windows上传文件到linux,中文名乱码解决方法

上传一个名称为"一级页面.html"的文件到linux服务器 ll命令查看文件名是乱码 在windows上将html文件压缩为test.zip,上传到linux服务器 再在服务器上unzip解压,解压后文件名称就显示正常了. 此种方法对目录也有效.

uploadify上传文件,删除文件再上传文件报文件已存在的解决办法

在这个jquery.uploadify.js文件的cancel方法中找到 在相应的位置添加 delete swfuploadify.queueData.files[file.id];这句

fileUpload上传文件,并设置文件名以及保存服务器位置

我做的是上传Excel文件,保存内容到数据库. 下面部分代码是fileUpload上传文件,并设置文件名以及保存服务器位置. if (fileUpload.HasFile) { string fileNameNo = Path.GetFileName(fileUpload.PostedFile.FileName); //获取文件名和扩展名 fileNameNo = fileNameNo.Replace("(", "-").Replace(")",

httpclient 4.3 psot方法上传文件与参数 中文乱码解决

废话不多说,直接上有码的! 1 package httpclient; 2 3 import java.io.File; 4 import java.nio.charset.Charset; 5 6 import org.apache.http.Consts; 7 import org.apache.http.Header; 8 import org.apache.http.HttpEntity; 9 import org.apache.http.client.methods.Closeable

linux 中文显示乱码解决办法

linux 中文显示乱码解决办法, 其实是有多种情况的, 有一部分是由于终端默认的设置造成的 vi /etc/sysconfig/i18n将内容改为LANG="en_US.UTF-8"SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="latarcyrheb-sun16"将内容改为LANG="zh_CN.GB18030"LANGUAGE="zh_

http中 get方法 传送中文参数乱码解决办法

http传送参数有两种方法:get 和post  当时使用get方法传递中文参数是会有乱码现象 解决办法: 1.在jsp压面url后面的参数使用 encodeURI:"&zxbghy="+ encodeURI(zxbghy) 2.在后台java获取参数时使用字节数组:temphgdmhy = new String(hgdmhy.getBytes("ISO-8859-1"), "UTF-8");  案例,用get方法传递两个中文参数:zxb

PHP7 上传文件报错 Internal Server Error解决方法

上传文件的时候总是提示Internal Server Error错误.错误如下: Internal Server Error 检查Apache的错误日志.Apache/logs/error_log 错误信息为 mod_fcgid: HTTP request length 139072 (so far) exceeds MaxRequestLen (131072) 该错误是上传文件过大,需要修改Apache 和PHP的配置文件的upload上传文件大小 修改您的php.ini内 upload_ma