public String setFileDownloadHeader(HttpServletRequest request, HttpServletResponse response, String fileName) throws Exception {
String userAgent = request.getHeader("user-agent").toLowerCase();
if (userAgent.contains("msie") || userAgent.contains("like gecko") ) {
// win10 ie edge 浏览器 和其余系统的ie
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
// fe
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
}
return fileName;
}
复制代码
@GetMapping("/download")
public String downloadFile(HttpServletRequest request, HttpServletResponse response) {
...
// .处理文件名预防乱码
fileName = setFileDownloadHeader(request, response, fileName);
// .设置强制下载不打开,安装我的需求随便设置
response.setContentType("application/force-download");
// .设置文件头:最后一个参数是设置下载文件名
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
...
}
复制代码