Java文件下载:如何编码文件名称以及如何设置HttpServletResponse
在下载文件时,经常遇到文件名乱码等问题。
本文说明如何编码文件名,以及如何设置HttpServletResponse对象。
1,如何编码文件名
String userAgent = request.getHeader("User-Agent");
if (/* IE 8 至 IE 10 */
userAgent.toUpperCase().contains("MSIE") ||
/* IE 11 */
userAgent.contains("Trident/7.0")) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else if (userAgent.toUpperCase().contains("MOZILLA") ||
userAgent.toUpperCase().contains("CHROME")) {
fileName = new String(fileName.getBytes(), "ISO-8859-1");
} else {
fileName = URLEncoder.encode(fileName, "UTF-8");
}
2,如何设置HttpServletResponse对象 以下代码以Excel文件下载为例。
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment; filename=" + fileName);