因文件名中包含特殊空格引起的一个上传文件的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+", "_");
改后果然有效。
希望大家以后在对文件的名称进行处理时能考虑到这一点,或者自定义文件命名放于服务器上(用于后面下载),文件显示名称使用上传的源文件名。