文件上传到服务器文件名中文乱码问题

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

文件上传到服务器文件名中文乱码问题

1,需求分析

上传附件到部署服务器,但是上传到服务器出现文件名中文乱码,中文变成(?)问号,而且在本地测试是正常的。

通过打印日志发现,下面fileName乱码。

文件上传到服务器文件名中文乱码问题插图

2,原因及解决方式参考

SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法,参考文末补充知识点介绍,非常详细。

方案1,如果前后台都改加/zuul改动较大,所有Controller地址加/zuul,里面所有的方法对应前端地址都要修改

方案2,本地启动报错

最终的方案

2.1)  前端:涉及到上传的接口前面加/zuul

现地址:zuul/csms/sales/plan/insert/upload

原地址:/csms/sales/plan/insert/upload

后端:controller路径不改动

看下图网关及controller的配置信息,直接在前端请求路径前加/zuul,无法请求到后台,路径无效。

文件上传到服务器文件名中文乱码问题插图1

文件上传到服务器文件名中文乱码问题插图2

2.2)修改nginx路由配置

查找nginx安装的路径以及相关安装操作命令

Linux环境下,怎么确定Nginx是以那个config文件启动的? 

[root@localhost ~]# ps -ef | grep nginx

root 21196 1 0 23:40 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

nginx 21197 21196 0 23:40 ? 00:00:00 nginx: worker process

root 21199 20993 0 23:42 pts/0 00:00:00 grep –color=auto nginx

配置信息

文件上传到服务器文件名中文乱码问题插图3

转发路由添加上图下面红框配置信息,允许/zuul开头的路径通过nginx转发

补充:

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

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

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

/** * 各种poi导入导出的请求控制模块; * * @author:JunZhou * @Company:LongZheng * @Email:1769676159@qq.com * @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的配置文件中添加一个如下的属性: zuul.servlet-path=/

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

参考文章:

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

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


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容