Response.WriteFile 問題詢問<p><font size=2>Dear all,</font></p> <p><font face=Verdana size=2>請教各問 Solution, 我有一支程式去取得 Fielserver 檔案, 然後把資料用 Response.WriteFile 丟給 Client, 但我想在 WriteFile 完成後把, 這支頁面關掉, 請問有何方法, 或是 <a title="http://www.microsoft.com/downloads" href="http://www.microsoft.com/downloads">www.microsoft.com/downloads</a> 的效果,點選以後跳出下載視窗,檔案丟出來後,關閉視窗,謝謝。</font></p> <p><font size=2><strong>   </strong></font><font size=1><strong>     try<br>        {<br>            #region File 處理</strong></font></p> <p><font size=1><strong>            FileInfo fi = new FileInfo(file_path);</strong></font></p> <p><font size=1><strong>            if (fi.Extension != null)<br>            {<br>                switch (fi.Extension.ToLower())<br>                {<br>                    case &quot;.htm&quot;:<br>                    case &quot;.html&quot;:<br>                        type = &quot;text/HTML&quot;;<br>                        break;</strong></font></p> <p><font size=1><strong>                        ...........................................</strong></font></p> <p><font size=1><strong>                        ...........................................</strong></font></p> <p><br><strong><font size=2><font size=1>                }<br></font>          </font><font size=1>  }</font></strong></p> <p><font size=1><strong>            Response.AppendHeader(&quot;content-disposition&quot;, &quot;attachment; filename=&quot; + Server.UrlEncode(fi.Name));<br>            Response.WriteFile(file_path);<br>            Response.End();<br>            #endregion<br>        }<br>        catch (Exception ex)<br>        {<br>            Response.Write(ex.Message);<br>        }</strong></font></p> <p><strong><font size=1></font></strong> </p> <p><strong><font size=1></font></strong> </p>© 2009 Microsoft Corporation. 版權所有,並保留一切權利。Wed, 28 Jan 2009 22:50:33 Z6391afbf-7333-43d6-ab81-935e51fec56chttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6391afbf-7333-43d6-ab81-935e51fec56chttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6391afbf-7333-43d6-ab81-935e51fec56cwave0707http://social.msdn.microsoft.com/Profile/zh-TW/?user=wave0707Response.WriteFile 問題詢問<p><font size=2>Dear all,</font></p> <p><font face=Verdana size=2>請教各問 Solution, 我有一支程式去取得 Fielserver 檔案, 然後把資料用 Response.WriteFile 丟給 Client, 但我想在 WriteFile 完成後把, 這支頁面關掉, 請問有何方法, 或是 <a title="http://www.microsoft.com/downloads" href="http://www.microsoft.com/downloads">www.microsoft.com/downloads</a> 的效果,點選以後跳出下載視窗,檔案丟出來後,關閉視窗,謝謝。</font></p> <p><font size=2><strong>   </strong></font><font size=1><strong>     try<br>        {<br>            #region File 處理</strong></font></p> <p><font size=1><strong>            FileInfo fi = new FileInfo(file_path);</strong></font></p> <p><font size=1><strong>            if (fi.Extension != null)<br>            {<br>                switch (fi.Extension.ToLower())<br>                {<br>                    case &quot;.htm&quot;:<br>                    case &quot;.html&quot;:<br>                        type = &quot;text/HTML&quot;;<br>                        break;</strong></font></p> <p><font size=1><strong>                        ...........................................</strong></font></p> <p><font size=1><strong>                        ...........................................</strong></font></p> <p><br><strong><font size=2><font size=1>                }<br></font>          </font><font size=1>  }</font></strong></p> <p><font size=1><strong>            Response.AppendHeader(&quot;content-disposition&quot;, &quot;attachment; filename=&quot; + Server.UrlEncode(fi.Name));<br>            Response.WriteFile(file_path);<br>            Response.End();<br>            #endregion<br>        }<br>        catch (Exception ex)<br>        {<br>            Response.Write(ex.Message);<br>        }</strong></font></p> <p><strong><font size=1></font></strong> </p> <p><strong><font size=1></font></strong> </p>Thu, 31 Aug 2006 03:27:32 Z2006-08-31T08:51:19Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#66b3e8a4-93b1-4b8a-9043-c6937c314945http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#66b3e8a4-93b1-4b8a-9043-c6937c314945DotJumhttp://social.msdn.microsoft.com/Profile/zh-TW/?user=DotJumResponse.WriteFile 問題詢問<p>您好:<br>若用簡單的想法,<br>您可以在檔案下載的顯示使用 Target=&quot;_blank&quot;<br>ex : 下載檔案 (Target=&quot;_blank&quot;) 觸發你專門輸出檔案的網頁 </p> <p><font face=Verdana>例如這篇 <br><a title="http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=314597&amp;SiteID=14" href="http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=314597&amp;SiteID=14"><font face=Arial>http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=314597&amp;SiteID=14</font></a><br></font></p> <p><font face=Verdana>試試看這樣能否解決您的問題</p></font>Thu, 31 Aug 2006 06:11:58 Z2006-08-31T06:11:58Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6f7cd597-0ad6-40b9-9ce5-58e0f9efe0d8http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6f7cd597-0ad6-40b9-9ce5-58e0f9efe0d8wave0707http://social.msdn.microsoft.com/Profile/zh-TW/?user=wave0707Response.WriteFile 問題詢問<p>謝謝回覆, 我剛是這使用 target=&quot;_blank&quot;,程式會打開空視窗,然後會出現下載檔案對話方塊,但是下載後不會自動關掉新的視窗,請問有什麼方法可以在同一個程式內,Response.WriteFile 後,還可以控制網頁功能,謝謝</p>Thu, 31 Aug 2006 06:50:02 Z2006-08-31T06:50:02Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#a2248a23-daad-4656-8346-1779c2b1d4e0http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#a2248a23-daad-4656-8346-1779c2b1d4e0璉璉http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u7489%u7489Response.WriteFile 問題詢問<p>我自己是用:</p> <p><a title="http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&amp;Module=8&amp;Function=43" href="http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&amp;Module=8&amp;Function=43">http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&amp;Module=8&amp;Function=43</a></p> <p>不另外開新視窗。</p> <p>在上面那個函數的子函數:</p> <p><a title="http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&amp;Module=8&amp;Function=42" href="http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&amp;Module=8&amp;Function=42">http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&amp;Module=8&amp;Function=42</a></p> <p><font color="#0000ff">SetResponseHeader</font>(&quot;application/octet-stream&quot;, strFileName, True)<br>Response.WriteFile(absPath)<br>Response.End()</p> <p>我也有專案是這樣呼叫,讓他強制跳出存檔對話盒。</p> <p>微軟那個主要是因為他做在 Botton 上,不是連結上,所以會另外用個 window.open 來開,若是網址直接是檔案,我記得 IE 會自己關閉這個視窗,或著你可以用開啟來源來關閉它,例如 VBScript:</p> <p>Set popupWindow = window.open(xxxxx)</p> <p>popupWindow.close</p> <p>不過在 Close 前要先讓你的母視窗睡一下,才會進入檔案下載。</p>Thu, 31 Aug 2006 07:30:53 Z2006-08-31T08:51:04Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6a20d0fa-3cb7-42cf-9ae2-c5b54416b86ehttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6a20d0fa-3cb7-42cf-9ae2-c5b54416b86eDotJumhttp://social.msdn.microsoft.com/Profile/zh-TW/?user=DotJumResponse.WriteFile 問題詢問<p>我這邊用這樣的方法,下載後 新視窗會自己消失。<br>如果你那邊還是不行,可能您就在下載檔後,增加一個<br>增各JavaScript </p> <p>Response.Write(&quot;&lt;script language='javascript'&gt;<span style="color:red">window.opener = window; <font color="#000000">window.close(); </font></span>&lt;/script&gt;&quot;);<br>用JavaScript的方式來關閉。</p>Thu, 31 Aug 2006 07:43:46 Z2006-08-31T08:51:13Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#bf3a453e-f69c-496e-b297-2e51ffcb89d5http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#bf3a453e-f69c-496e-b297-2e51ffcb89d5小朱http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u5c0f%u6731Response.WriteFile 問題詢問我都用 Response.BinaryWrite() 呢 ...Thu, 31 Aug 2006 08:35:10 Z2006-08-31T08:51:19Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#d7ac9ded-f352-4e2f-8482-f20cb116cf1ahttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#d7ac9ded-f352-4e2f-8482-f20cb116cf1awave0707http://social.msdn.microsoft.com/Profile/zh-TW/?user=wave0707Response.WriteFile 問題詢問<p>謝謝大家回覆, 我又試寫了一段程式, 程式呈現有兩種方式,</p> <p>1. PSD、AI、PDF 跳出下載對話方塊後,不會自動關閉視窗</p> <p>2. EXE、BMP、BIN 跳出下載對話方塊後,就會自動關閉視窗</p> <p>        Response.AppendHeader(&quot;content-disposition&quot;, &quot;attachment; filename=DC7057.bin&quot;);<br>        Response.WriteFile(@&quot;C:\_job_items\temp\scaning\DC7057.bin&quot;);<br>        Response.End();</p> <p>所以我想再試試看 用 Javascript 然後讓母視窗睡一下的方法,因為之前我開啟下載視窗後,接著做 [window name].close() 的指令時,他就直接關掉了,另外我也會試試看 Response.BinaryWrite() 的方式,謝謝。</p>Thu, 31 Aug 2006 08:50:26 Z2006-08-31T08:50:26Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#eb0d486a-83d0-4da5-9cd9-d1a79c2d021ehttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#eb0d486a-83d0-4da5-9cd9-d1a79c2d021e小帥悶http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u5c0f%u5e25%u60b6Response.WriteFile 問題詢問<P>Dear <SPAN class=forumName><FONT size=3>wave0707</FONT></SPAN></P> <P>小弟也遇到同樣的問題,請問您解決產生pdf後,不會自動關閉的問題了嗎?</P>Wed, 06 Sep 2006 01:16:18 Z2006-09-06T01:16:18Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#9d2e180d-27a7-4f25-a3ee-b5b61db18acchttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#9d2e180d-27a7-4f25-a3ee-b5b61db18acc璉璉http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u7489%u7489Response.WriteFile 問題詢問<p>說實在的,我不太清楚為何要另開視窗。</p> <p><font face=Verdana>直接點選 aspx 的網址不就可以輸出下載?就不會有不能關閉視窗的問題,因為根本不存在另開視窗。</font></p>Wed, 06 Sep 2006 01:45:05 Z2006-09-06T01:45:05Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#af43b47d-6e0b-486c-bb39-5b45756ee7c2http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#af43b47d-6e0b-486c-bb39-5b45756ee7c2wave0707http://social.msdn.microsoft.com/Profile/zh-TW/?user=wave0707Response.WriteFile 問題詢問<p>其實我也忘了當初未何要開新視窗,可能是想再傳出檔案後,在針對頁面作些處理,另外就是因為我的 FileServer 跟 IIS Server 不是在同一台,為了跨機器存取,我在 .net framework 1.X 時,使用 impersonate 來做存取不成功,只好把所有的檔案存取,統一寫在一個 Application 裡面,然後給他匿名存取,存取帳號使用 Admin 權限的帳號,才過得去,為了好管理,我把檔案存取都用跳出視窗來處理,現在 ASP2.0 好像就不需要了,我現在使用 整合Window 驗證,然後使用 impersonate,就可以存取別台機器,這樣我就不需要再把檔案存取抽出來寫了。</p> <p>現在我是直接採用 .aspx 讓他在同一視窗執行,確實已經不需要關閉視窗的功能,不過也無法做下載檔案後的程式處理。微軟 Download 的功能,我看了他的 Script,是用 Client script 來達成目標的,所以他還能導到感謝頁面,至於有些檔案類型會自動關頁面,有些不行,我想應該跟 Client 端 IE 的設定有關 (檔案的關連),因為我不能用程式控制開關跳出視窗,所以我就不用跳出視窗的方式,有些網站在下載檔案後,會留個小視窗在螢幕上,我想可能也是這各問題。</p>Fri, 15 Sep 2006 01:33:06 Z2006-09-15T01:33:06Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#485f3fb7-3479-45ae-bcb7-af1f5341bfechttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#485f3fb7-3479-45ae-bcb7-af1f5341bfec璉璉http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u7489%u7489Response.WriteFile 問題詢問<p>你要的東西我做了一個簡單的範例:</p> <p><a title="http://tlcheng.twbbs.org/Test/Download/welcome.htm" href="http://tlcheng.twbbs.org/Test/Download/welcome.htm">http://tlcheng.twbbs.org/Test/Download/welcome.htm</a></p> <p>完整範例壓縮檔:</p> <p><a title="http://tlcheng.twbbs.org/Test/Download/download.zip" href="http://tlcheng.twbbs.org/Test/Download/download.zip">http://tlcheng.twbbs.org/Test/Download/download.zip</a></p> <p>檔名都先寫死,比較好測試,作法邏輯:</p> <p>welcome.htm 點連結 -&gt; 跳出視窗 Test.aspx (Response.WriteFile) -&gt; 下載 pdf 檔 -&gt; 自動關閉</p> <p>(自己視窗在連結點選後) -&gt; 轉 thanks.htm</p> <p>註:放在 Test 子目錄下的東西不保證長長久久... 至少這幾天會留著。</p>Fri, 15 Sep 2006 06:45:08 Z2006-09-15T06:45:08Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6003c933-77be-45f9-ba67-de8157f0bb0bhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#6003c933-77be-45f9-ba67-de8157f0bb0b小朱http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u5c0f%u6731Response.WriteFile 問題詢問<p>微軟 Download Center 的作法應該是:</p> <p>1. 點選檔案時,轉向到 Thanks 頁面 .</p> <p>2. 輸出下載路徑到 Thanks 頁面,並設定數秒後啟動下載(使用 window.setTimeout() 加上 window.location.href)</p> <p>像 CNet, Sourceforge.net 的下載應該也是這樣的作法 .</p>Sat, 16 Sep 2006 01:54:11 Z2006-09-16T01:54:11Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#95c2874d-8a85-435d-8e4e-382bf069208ehttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#95c2874d-8a85-435d-8e4e-382bf069208ewave0707http://social.msdn.microsoft.com/Profile/zh-TW/?user=wave0707Response.WriteFile 問題詢問謝謝各位, 我這邊直接執行, 開啟檔案還是沒有自動關閉, 有些電腦執行正常, 我有另外試過不同的檔案格式, 執行結果不盡相同, 有的可以關閉, 有的就空了一各視窗在那邊, 我想在公司再多找幾台來試試, 看是否能使用程式完全控制, 免得使用者會太過困擾 <img src="images/emoticons/smile_teeth.gif">Sat, 16 Sep 2006 04:17:44 Z2006-09-16T04:17:44Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#d571e30d-079e-42f5-a5ce-9c6feab66da5http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#d571e30d-079e-42f5-a5ce-9c6feab66da5璉璉http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u7489%u7489Response.WriteFile 問題詢問<p>html 改成小朱說的方法,壓縮檔沒動。</p> <p><font face=Verdana>不過這樣會跳出警告封鎖列,必須再點一次...</font></p>Wed, 20 Sep 2006 13:18:00 Z2006-09-20T13:18:00Zhttp://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#fa27cfbb-1652-47ad-9ba0-01593cc51411http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/6391afbf-7333-43d6-ab81-935e51fec56c#fa27cfbb-1652-47ad-9ba0-01593cc51411璉璉http://social.msdn.microsoft.com/Profile/zh-TW/?user=%u7489%u7489Response.WriteFile 問題詢問<p>剛剛試過,如果不在乎封鎖列的話,直接用</p> <p>&lt;iframe style='display: none; ' src=&quot;test.aspx&quot;&gt;&lt;/iframe&gt;</p> <p>也是可以...</p> <p>就不用寫 timeout 程式碼。</p>Wed, 20 Sep 2006 13:25:18 Z2006-09-20T13:25:18Z