直接贴上代码:
//文件名编码,解决乱码问题(根据浏览器适配)
String fileName = file.getName();
String encodedFileName = null;
String userAgentString = request.getHeader("User-Agent");
String browser = UserAgent.parseUserAgentString(userAgentString).getBrowser().getGroup().getName();
if(browser.equals("Chrome") || browser.equals("Internet Exploer") || browser.equals("Safari")) {
encodedFileName = URLEncoder.encode(fileName,"utf-8").replaceAll("\\+", "%20");
} else {
encodedFileName = MimeUtility.encodeWord(fileName);
}
//设置Content-Disposition响应头,一方面可以指定下载的文件名,另一方面可以引导浏览器弹出文件下载窗口
response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\"");