直接贴上代码:
//文件名编码,解决乱码问题(根据浏览器适配) 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 + "\"");