下載中文檔案亂碼解決方式
首先我的目錄是:壓縮包即是我要下載的檔案
我的下載介面:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3> 使用a標籤指向伺服器資源 </h3> <a href="/Web14_response/download/a.flv">a.flv</a><br> <a href="/Web14_response/download/a.jpg">a.jpg</a><br> <a href="/Web14_response/download/a.mp3">a.mp3</a><br> <a href="/Web14_response/download/a.mp4">a.mp4</a><br> <a href="/Web14_response/download/a.txt">a.txt</a><br> <a href="/Web14_response/download/a.zip">a.zip</a><br> <h3> 使用伺服器程式碼完成伺服器資源下載 </h3> <a href="/Web14_response/DownloadServlet2?filename=a.flv">a.flv</a><br> <a href="/Web14_response/DownloadServlet2?filename=a.jpg">a.jpg</a><br> <a href="/Web14_response/DownloadServlet2?filename=a.mp3">a.mp3</a><br> <a href="/Web14_response/DownloadServlet2?filename=a.mp4">a.mp4</a><br> <a href="/Web14_response/DownloadServlet2?filename=a.txt">a.txt</a><br> <a href="/Web14_response/DownloadServlet2?filename=壓縮包.zip">壓縮包.zip</a><br> </body> </html>
提供檔案下載的Servlet
package com.xpu.content; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import sun.misc.BASE64Encoder; public class DownloadServlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 這個主要是下載中文的 // 獲取要下載的檔案的名稱 String filename = request.getParameter("filename"); // 解決獲得中文引數的亂碼 filename = new String(filename.getBytes("ISO8859-1"), "UTF-8"); // 設定頭資訊 response.setContentType(getServletContext().getMimeType(filename)); String agent = request.getHeader("User-Agent"); String filenameEncoder = ""; if (agent.contains("MSIE")) { // IE瀏覽器 filenameEncoder = URLEncoder.encode(filename, "utf-8"); filenameEncoder = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐瀏覽器 BASE64Encoder base64Encoder = new BASE64Encoder(); filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?="; } else { // 其它瀏覽器 filenameEncoder = URLEncoder.encode(filename, "utf-8"); } response.setHeader("Content-Disposition", "attachment;filename=" + filenameEncoder); System.out.println(filename); // 獲取檔案的絕對路徑 String path = getServletContext().getRealPath("/download/" + filename); // 獲取該檔案的輸入流 InputStream is = new FileInputStream(path); // 獲取輸出流 ServletOutputStream os = response.getOutputStream(); // 檔案拷貝的模板程式碼 int len = 0; byte[] bys = new byte[1024]; while ((len = is.read(bys)) != -1) { os.write(bys, 0, len); } is.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
下載效果:
相關推薦
下載中文檔案亂碼解決方式
首先我的目錄是:壓縮包即是我要下載的檔案 我的下載介面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title he
mysql中採用concat來拼接中文字元亂碼解決方式
mysql concat亂碼問題解決 concat(str1,str2) 當concat結果集出現亂碼時,大都是由於連線的欄位型別不同導致,如concat中的欄位引數一個是varchar型別,一個是int型別或doule型別,就會出現亂碼。 解決方法:利用mysql的字串轉換
使用Source Insight時,中文註釋亂碼解決方式
前幾天剛剛下載安裝了Source Insight(一個IDE,可以生成函式呼叫樹狀圖),匯入之前寫好的C檔案發現出現了中文亂碼,以下為我處理問題的步驟:1. 按照網上的很多部落格,在Source Insight中 Options->Preferences->Fil
zuul上傳中文檔案亂碼解決.
專案中用到zuul,不起閘道器上傳檔案不會出現中文亂碼,經過閘道器處理後,中文都變成??.查了好久的解決方案都是在url加字首/zuul來訪問。這樣確實可以解決問題。但是專案很多定義給客戶端訪問的api都已經成型,讓其他客戶端修改訪問的url是不可能的。閘道器這裡將所有帶/
java中中文的文件名下載亂碼解決方式
isp 其中 gets TP ttr 完成後 int lose PE 相信很多人在寫下載文件程序是會遇到很多亂碼的問題,自己也整理了一下,希望可以幫助到大家。 首先要知道各個瀏覽器的編碼格式是不一樣的,下面是一下主流瀏覽器的編碼格式: 各瀏覽器支持的對應編碼格式為: 1.
servlet解決get請求方式,下載中文檔案,檔名稱丟失問題
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filenam
mysql中文亂碼解決方式
方式 sqlserver 查看 fadein tin 方案 tab views 編碼 近期項目使用到mysql。卻突然出現了中文亂碼問題。嘗試了多種方案,最終解決亂碼問題,總結一下解決方式,給遇到同樣問題的人一點參考。 中文亂碼的原因 1.安裝m
關於火狐瀏覽器下載檔案時,中文檔案亂碼問題的處理方案。
//設定要下載的檔案的媒體格式 response.setContentType(this.getServletContext().getMimeType(filename)); //處理中文檔案下載時火狐瀏覽器中文檔名亂碼的問題 //從請求頭中獲取User-Agent判斷當前使用的是否是火狐瀏覽器
IE下get方式傳中文引數亂碼解決方法
亂碼原因:瀏覽器在傳遞url的時候,會使用自己的編碼格式對地址進行編碼,如果瀏覽器所使用編碼與伺服器採用編碼不一致,伺服器接收到的引數就會出現亂碼。在firefox,chrome下正常,ie下會出現亂碼。 解決方法:使用js encodeURI 對地址進行統一編碼, &n
在ie瀏覽器下載檔案亂碼解決
String userAgent = requst.getHeader("user-agent").toLowerCase(); if (userAgent.contains("msie") ||
解決struts2 下載中文名稱亂碼問題 適應不同三大主流瀏覽器 chrome28.0.1500.95、 firefox 23.0.1 、 IE11
最近使用Sturts2作檔案下載時,發現在不同的瀏覽器上會有中文檔名亂碼的問題,現在把解決方法放在這裡,以便留個備份。 struts2配置檔案如下: Xml程式碼 <actionname="fileDownLoad"class="com.test
利用FTPClient上傳的檔案中中文名字亂碼解決辦法
新增下面這一段: if (FTPReply.isPositiveCompletion(ftpClient.sendCommand( "OPTS UTF8", "ON"))) {// 開啟伺服器對UTF-8的支援,如果伺服器支援就用UTF-8編碼,否則就使用本地編碼(GBK)
關於爬取資料儲存到json檔案,中文是unicode解決方式
原帖地址: https://www.cnblogs.com/yuyang26/p/7813097.html 流程: 爬取的資料處理為列表,包含字典。裡面包含中文, 經過json.dumps,儲存到json檔案中, 發現裡面的中文顯示未\ue768這樣子 查閱資
Safari瀏覽器顯示PHP檔案中文出現亂碼解決方案
首先應確認PHP程式碼中使用的編碼都是統一的。 <pre name="code" class="php"><?php $conn=mysql_connect("localhost","root","") or die("資料庫伺服器連線錯誤".my
Android讀取xxx.properties配置檔案中文出現亂碼解決方法
android讀取assets中的配置檔案英文沒問題,但是中文會出現亂碼的問題,前提配置檔案已經是utf-8的格式了 出現問題的程式碼: @Override public void s
Java中文亂碼解決方式
//POST請求中文亂碼處理(在獲得引數值之前設定)req.setCharacterEncoding("UTF-8");// GET請求處理中文亂碼 String username = req.getP
徹底解決Moodle上傳檔案中文檔名亂碼解決方法
2 推薦 moodle對中文的支援不是很好,這是公認的BUG。在網上可以找到一些解決辦法,其中最簡單的做法是: ------------------------------- config.php加入$CFG->unicodecleanfilename = true; ==============
appfuse中文配置檔案亂碼解決方法
Appfuse在ant new生成新的app時,拷貝的ApplicationResources_zh_CN.properties($app/web/WEB-INF/classes)有問題,我是直接把原來的那個Applic
SpringCloud 上傳檔案,經過Zuul,中文檔名亂碼解決辦法
網上比較常見的解決方案是在uri前加/zuul 使用zuul的servlet繞開springmvc來解決上傳檔案亂碼問題 比如:原來你上傳檔案的路徑是/api/file/upload, 則你可以通過uri /zuul/api/file/upload來呼叫介面上傳檔案
Python HTTP庫requests中文頁面亂碼解決方案!
獲得 使用 http text odin 抽取 from Coding blog 把html編碼類型賦與獲取到文本 獲取html編碼類型: 1.使用apparent_encoding可以獲得真實編碼 1 >>> response.apparent_enc