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

2024-03-01 0 846
目录
  • 文件上传到服务器文件名中文乱码问题
    • 1,需求分析
    • 2,原因及解决方式参考
  • 最终的方案
    • 2.1) 前端:涉及到上传的接口前面加/zuul
    • 2.2)修改nginx路由配置
  • SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法
    • 方案一、在上传文件的请求路径之前添加字符串“zuul”声明此请求的编码不做处理。
    • 方案二:

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

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,无法请求到后台,路径无效。

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

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

2.2)修改nginx路由配置

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

Linux环境下,怎么确定Nginx是以那个config文件启动的?[root@localhost ~]# ps -ef | grep nginxroot 21196 1 0 23:40 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.confnginx 21197 21196 0 23:40 ? 00:00:00 nginx: worker processroot 21199 20993 0 23:42 pts/0 00:00:00 grep –color=auto nginx

配置信息

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

转发路由添加上图下面红框配置信息,允许/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

到此这篇关于文件上传到服务器文件名中文乱码问题的文章就介绍到这了,更多相关文件上传到服务器文件名中文乱码内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Nginx服务器 文件上传到服务器文件名中文乱码问题 https://www.u-9.cn/server/nginx/173951.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务