文件下载异常处理

现象:前段时间编写了一个文件下载的模块,在本地windows运行没有任何问题,文件都可以正常下载,但是当程序部署到linux生产环境后进行测试后发现中文文件名文件无法下载。

解决过程:

1、使用xftp工具查看文件夹发现文件存在的,百思不得解之下查看jdk源码是去掉用file.exists区判断,因此写一段程序去测试,发现好像是编码问题,但是是什么地方的编码出现问题了呢?

2、通过不断更改程序和数据库的编码都无果,后面询问同事,通过他的一段话启发了我,文件下载判断文件是否存在无非是通过文件路径和服务器上的文件路径进行比较,如果程序没问题,是不是服务器上文件路径的编码有问题呢?

3、通过一番求证,更改远程xftp的编码发现确实是服务器上的文件编码不对,因此更改文件名的编码为服务器上文件名的编码后发现下载正常了

代码(UTF-8)

不一致

文件服务器(GBK)




代码(UTF-8)

转化为gbk

一致后下载正常

你可能感兴趣的:(JAVA)