java解決下載時檔名亂碼問題
阿新 • • 發佈:2018-11-02
直接上部分程式碼:
String zipFileName = fileNameRoot + System.currentTimeMillis() + ".zip";// 檔名+時間戳+ .zip //得請求頭中的User-Agent String agent = httpServletRequest.getHeader("User-Agent"); // 根據不同的客戶端進行不同的編碼 String filenameEncoder = ""; if (agent.contains("MSIE")) { // IE瀏覽器 filenameEncoder = URLEncoder.encode(zipFileName, "utf-8"); filenameEncoder = filenameEncoder.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐瀏覽器 BASE64Encoder base64Encoder = new BASE64Encoder(); filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(zipFileName.getBytes("utf-8")) + "?="; } else { // 其它瀏覽器 filenameEncoder = URLEncoder.encode(zipFileName, "utf-8"); } httpServletResponse.setContentType("application/zip"); // 告訴客戶端該檔案不是直接解析,而是以附件形式開啟(下載) httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + filenameEncoder);