Spring上传文件乱码问题(问号版)

Spring上传文件乱码问题(问号版)

一、问题描述:

spring项目上传文件,后端接收文件并获取文件名称,名称中文变成 “?”,例如:??abc()??.xml,其中问号为中文字符

// 前端传递参数
MultipartFile file
//后端获取filename
String originalFilename = file.getOriginalFilename();

二、原因分析

该系统使用的zuul作为分布式网关,处理传入请求时,将对参数进行解码,以便他们可用于zuul过滤器中的可能修改,然后在路由过滤器中构建后端请求时重新编码他们。重新编码的过程中因为编码不一致导致出现中文变问号的乱码情况。这种情况无法通过获取文件名后对已经出现问号的文件名进行重新编码解决。

问题是在spring-cloud-zuul在解析文件名的时候会做处理:

三、解决办法

网上百度有很多文章,总结下来就是两种解决办法。

1、修改zuul的配置,添加zuu.servlet-path: /

这样解决不需要前端修改,方便快捷。已验证可以解决上述问题。

# 解决上传文件,文件名名称中包含特殊字符转变成问号
zuul:
  servlet-path: /

2、网上所说的方式,api接口前面 /zuul:

在不修改zuul默认配置参数的情况下,在上传文件的请求路径之前添加字符串“zuul”声明此请求被ZuulServlet处理。
例如在当前代码下,请求路径是:
localhost:8080/up/upload
那么采用方案一解决中文乱码的请求路径就是:
localhost:8080/zuul/up/upload
经过测试,中文乱码问题成功解决。

参考文章:https://blog.csdn.net/weixin_43221207/article/details/108538277

posted @   香蕉少侠  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示