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);
...
}
複製代碼