1. 程式人生 > >針對不同瀏覽器,進行附件名的編碼

針對不同瀏覽器,進行附件名的編碼

1.下載檔案時,針對不同瀏覽器,進行附件名的編碼

import java.io.IOException;
import java.net.URLEncoder;

import sun.misc.BASE64Encoder;

public class FileUtils {
		/**
		 * 下載檔案時,針對不同瀏覽器,進行附件名的編碼
		 * 
		 * @param filename
		 *            下載檔名
		 * @param agent
		 *            客戶端瀏覽器
		 * @return 編碼後的下載附件名
		 * @throws IOException
		 */
		public static String encodeDownloadFilename(String filename, String agent)
				throws IOException {
			if (agent.contains("Firefox")) { // 火狐瀏覽器
				filename = "=?UTF-8?B?"
						+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
						+ "?=";
				filename = filename.replaceAll("\r\n", "");
			} else { // IE及其他瀏覽器
				filename = URLEncoder.encode(filename, "utf-8");
				filename = filename.replace("+"," ");
			}
			return filename;
		}
}