// 其中 Base64 类来自 org.apache.commons.codec 组件 一个40多k的jar
public String encodeFileName(HttpServletRequest request, String fileName) throws UnsupportedEncodingException {
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE")) {
return URLEncoder.encode(fileName, "UTF-8").replace("+", "%20");
}else if (null != agent && -1 != agent.indexOf("Mozilla")) {
return "=?UTF-8?B?"+(new String(Base64.encodeBase64(fileName.getBytes("UTF-8"))))+"?=";
} else {
return fileName;
}
}
使用例如下载Excel文件。
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeFileName(request, fileName) + "\"");