根据不同的浏览器编码方式处理不同,首先对使用的文件进行首次过滤,只要求符合条件的文件进入系统(例如上传文件的时候,限制文件名)
本案例中要求文件名为:中文、英文(大小写)、数字、空格、括号但不支持特殊字符
文件名为:879da7098c51e1f51d731 d5你好+-_@!#$%^&()().jpg
文件名中包含特殊字符,空格、加号、下划线、括号(中英文两种),注意,*不能成为文件名称,英文电脑会提示命名失败
下载前先根据不同的浏览器对文件名进行编码和相应的替换,下载时,在IE中文件名中的空格会转为+号,而谷歌则不会,中文的显示在不同浏览器也有不同的显示效果
主要代码如下:先判断浏览器,再将文件名使用不同的编码和转义
//获取浏览器信息
public String transferName(HttpServletRequest re, String fileName) throws UnsupportedEncodingException{
//判断浏览器的顺序很重要
String agent = re.getHeader("User-Agent");
System.out.println(agent)