中文文件下載方法(Java)

web開發中,如果瀏覽器上有一個超鏈接,點擊它後,彈出的下載框中文件名是亂碼或不顯示的時候,往往是由於我們沒有對中文文件名進行編碼處理,所以,這裏提供一箇中文文件下載的方法,以供參考。

針對瀏覽器類型,對文件名字做編碼處理 Firefox (Base64) , IE、Chrome(UTF-8)。。。

  • 如果文件的名字帶有中文,那麼需要對這個文件名進行編碼處理
  • 如果是IE ,或者  Chrome (谷歌瀏覽器) ,使用URLEncoding 編碼
  • 如果是Firefox , 使用Base64編碼

代碼如下:

public class DownLoadUtil {
    public static String base64EncodeFileName(String fileName) {
	BASE64Encoder base64Encoder = new BASE64Encoder();
	try {
		return "=?UTF-8?B?"
			+ new String(base64Encoder.encode(fileName
			.getBytes("UTF-8"))) + "?=";
	} catch (UnsupportedEncodingException e) {
		e.printStackTrace();
		throw new RuntimeException(e);
	}
    }
}
// 獲取來訪的客戶端類型
	String clientType = request.getHeader("User-Agent");
	
	if (clientType.contains("Firefox")) {
		fileName = DownLoadUtil.base64EncodeFileName(fileName);
	} else {
		//IE ,或者  Chrome (谷歌瀏覽器) ,
		//對中文的名字進行編碼處理
		fileName = URLEncoder.encode(fileName,"UTF-8");
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章