[問題] IE 不理會 TransmitFile 指令?

看板Web_Design作者 (PEIZON)時間14年前 (2011/05/20 16:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
‧作業系統版本-Windows Server 2003 ‧ASP.NET 版本-ASP.NET 2.050727 ‧錯誤訊息與狀況描述- 我從網路上抓到一段下載檔案的程式碼, 該post推薦用TransmitFile可以享有優秀的效能與隱藏檔案實際 URL等優點。 // DownloadTest.aspx.cs 中的程式碼。 Response.Clear(); Response.ClearHeaders(); Response.AppendHeader("Content-Disposition", "attachment; filename=img.jpg;"); Response.TransmitFile(@"img.jpg"); Response.End(); 但測試時卻發現 IE 會跟這段程式碼打架@@ 其中 DownloadTest.aspx 是下載檔案的網頁,直接連結是OK的。 但這個網頁若用 window.open() 去開啟,就沒有任何作用。 我用 DownloadPop.aspx 去開啟 DownloadTest.aspx, 點下去只會看到 DownloadTest.aspx 跳出來,閃一下就不見了~"~ 之所以要開一個新視窗跳出來, 是因為下載檔案那段程式碼若不放在 Page_Load裡面跑就會秀逗, 要不是下載不下來,就是同function 中其他程式碼會變得無作用~"~ DownloadPop 頁面用 FireFox 或 Google Chrome 開啟都是OK的,可以成功下載檔案。 但 IE 的使用者又是最大宗,無法忽略這個問題….orz 後來我根據 http://stackoverflow.com/questions/4453533/response-transmitfilefilepath-fails-in-child-page-in-ie (縮址為: http://ppt.cc/;w5j ) 這個網頁的說法,進行了 Encode 的動作,但仍然失敗~"~ 症狀跟原本的情況完全一樣... 用 window.open() 開啟就會失敗... 另外我們發現的蛛絲馬跡還有: 若到伺服器上使用 localhost 開啟,會成功! 但若使用 127.0.0.1 開啟,就會失敗~"~ 難道localhost跟127.0.0.1不一樣嗎? 我馬上試著 ping localhost,解析出來的IP的確是127.0.0.1呀… 也不是打錯 IP,因為其他頁面開起來都好好的。 而在伺服器上使用 Debug 模式下中斷點, 會發現用 localhost 跟 127.0.0.1 都有正常進入 Page_Load 並跑完所有程式碼, 但 127.0.0.1 就是沒有檔案出來! Response.Clear(); Response.ClearHeaders(); Response.AppendHeader("Content-Disposition", "attachment;filename=img.jpg;"); Response.TransmitFile(@"img.jpg"); Response.Flush(); //使用localhost會在這一行就跳出下載檔案,但127.0.0.1啥都沒有 Response.End(); 至此我已經認為大概是 IE 的bug了 orz 可是還是很多網站提供下載檔案的功能,用 IE 開都好好的呀! 大家到底都怎麼寫的?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.20.210.132 ※ 編輯: PEIRON 來自: 211.20.210.132 (05/26 10:42)
文章代碼(AID): #1DrYWNiZ (Web_Design)
文章代碼(AID): #1DrYWNiZ (Web_Design)