这是我在导出excel文件供用户下载时遇到的:
流程:
1、文件生成,文件全名名由路径加文件名构成,路径配置在数据库中动态读取,名称由时间加汉字构成。生成 的文件将存放在数据库中配置的路径中
2、前台页面显示出文件列表,点击下载,将文件名传到后台去,后台通过读取数据库配置的路径加上传过来的 文件名去寻找该文件
3、从指定文件中读取数据,设置相关信息,完成下载
中文乱码处理:
1、生成文件系统的实体文件时,文件名不存放汉字,而是将文件名(不用包括路径)转成Unicode 字符,即,使用URLEncoder.encode("文件名","UTF-8"),然后再去由该名称生成实体文件,当然这样的文件名在服务器上不解码是看不懂的,之所以这么做是为了防止有的服务器对中文编码不同,直接存放通用的Unicode码,解决后顾之忧。当然没有加密过的原来的文件名,也就是大家都认识的文件名还是要保存起来的,比如存到数据库中去,因为页面上显示的是要能看懂的!
2、前台显示文件名列表,将要下载的文件名传到后台去。传之前要通过js进行加密操作,同样转换成unicode字 符,传到后台之后,后台解密,可以得到正确的中文文件名称,不过此时得到的文件名没什么用,权当看一看文件名对不对吧!因为这时候通过这个文件全名来到服务器上读取文件肯定会报错的,FileNotFoundException