摘要:檔案下載範例: 於IE6(Win2000)導入正確檔名
昨天使用者跟我說: 檔案下載功能, 檔名不正確...
但是使用WinXP & Win7 (IE7以上)測試皆為正常無誤... 囧
一問之下才發現對方使用的是Win2000 (IE6版本), 而且還不少... 囧rz
再把程式碼翻出來仔細看... 結果發現...沒有指定「檔案類型」! (但是WinXP, 7 皆是使用正常的)
private void DownLoadFile(string parFilePath)
// 參數: parFilePath為檔案的「完整路徑」
{
string FilePath = parFilePath;
if (FilePath.Split('\\').Length != 0)
{
string FileName = FilePath.Split('\\')[FilePath.Split('\\').Length - 1];
// 使用UTF8編碼檔名
FileName = HttpUtility.UrlEncode(FileName, Encoding.UTF8);
FileStream fr = new FileStream(FilePath, FileMode.Open);
Byte[] buf = new Byte[fr.Length];
fr.Read(buf, 0, Convert.ToInt32(fr.Length));
fr.Close();
fr.Dispose();
Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/txt"; // 指定檔案型別, 之前就是少這行, IE6的檔名才會變成網頁檔名(xxx.aspx)...
Response.ContentEncoding = Encoding.UTF8;
Response.AddHeader("content-disposition", "attachment; filename=" + FileName);
Response.BinaryWrite(buf);
Response.End();
}
} // DownLoadFile()
還好公司還有Win2000的電腦可以測,
此段檔案下載範例函式跟大家分享~ (  ̄ c ̄)y▂ξ
參考資料: http://blog.darkthread.net/post-2007-09-05-kb-open-and-download-file-in-chinese-filename.aspx
--
不斷學習,精進自我
Herbert Fang