针对这个问题不同的浏览器解决方法不同
可通过User-Agent头部信息判断客户使用的是什么浏览器。
具体可参考:使用userAgent区分浏览器版本
firefox 和 Edge 解决方法
//设置两个消息头
response.addHeader("content-Type", "application/octet-stream");//第二个参数为MIME类型
//为了使带有中文的文件能在不同游览器中显示,需要分别处理
//获取头信息
String agent = request.getHeader("User-Agent");
if(agent.toLowerCase().indexOf("firefox") > -1) {
//Firefox
//response.addHeader("content-Disposition", "attachment;filename="+ new String(filename.getBytes(),"ISO-8859-1"));
response.addHeader("content-Disposition", "attachment;filename==?UTF-8?B?"+ new String(Base64.encodeBase64(filename.getBytes("UTF-8"))+"?="));
}else if(agent.toLowerCase().indexOf("edge") > -1) {
//edge
response.addHeader("content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8"));
}else {
//其他游览器
}