因文件名中包含特殊空格引起的一个上传文件的bug

项目中遇到了一个bug,上传一个excel文件,文件名中包含空格,项目中点击上传之后的文件名称出现无空格,数据库中保存的文件地址空格被?代替,无法下载。但是其他的包含空格的excel文件名却可以正常上传和下载。
有问题的excel文件名如下

 

数据库中保存的文件名

P74?JCIM?Retrofit?BBS?P64?to?P74?Right?(FXGL)设备工艺路线及工时表.xlsx

 上传到linux服务器上之后的文件截图

 

 

自己尝试了在代码中将文件名中的空格 " " 替换成 "_",并不起作用。

尝试了多种方法后发现并没有什么用,直到百度到了一篇文章说的 一种特殊空格 (不间断空格),ASCII码中除了32之外还有160这个特殊的空格  原文链接介绍:https://blog.csdn.net/lewky_liu/article/details/79353151

虽然他描述的是其他场景,但也给了我启发,让我对这种特殊空格成功进行了替换。

String name = getFileNameNoEx(file.getOriginalFilename()).replaceAll("\\u00A0+", "_");
改后果然有效。

 

希望大家以后在对文件的名称进行处理时能考虑到这一点,或者自定义文件命名放于服务器上(用于后面下载),文件显示名称使用上传的源文件名。

 

posted @   一曲终两人遇  阅读(511)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示