因文件名中包含特殊空格引起的一个上传文件的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 @ 2021-09-02 21:29  一曲终两人遇  阅读(576)  评论(0)    收藏  举报