2013-07-10 183 views
1

我正在使用元刷新標記來指向要從服務器下載的文件。我如何使它下載所有文件,而不是在瀏覽器中打開它們。我在代碼中加入meta標籤的背後是這樣的:ASP.NET Meta刷新強制下載

String filename = filenode.Element("name").Value.ToString(); 
HtmlMeta redirectMetaTag = new HtmlMeta(); 
redirectMetaTag.HttpEquiv = "Refresh"; 
redirectMetaTag.Content = string.Format("2;url=http://example.example.net/example/" + filename); 
this.Header.Controls.Add(redirectMetaTag); 

目前,thie文件如JPG只是作爲一個在瀏覽器

+0

而且......發生了什麼? – gustavodidomenico

+1

對不起,請參閱編輯 –

+0

只是爲了澄清,你想讓瀏覽器打開一個**另存爲**對話框來代替顯示圖像嗎? – gustavodidomenico

回答

0

打開如果要強制瀏覽器打開一個另存爲對話框,您必須爲頁面添加一對自定義標題。

我sugggest您使用的TransmitFile功能:

Response.ContentType = "image/jpeg"; 
Response.AppendHeader("Content-Disposition","attachment; filename=[your-file-name]"); 
Response.TransmitFile(Server.MapPath("~/images/[your-file-name]")); 
Response.End(); 

它會自動寫入文件內容到的OutputStream響應的。

+0

,因爲此下載直接發生在response.redirect後,我無法使用response.transmitfile方法。這也使得下載所有類型的文件變得更加困難。任何其他建議? –

+0

你可以,只需創建一個ASP頁面,以que querystring或session的形式接收文件名。然後你重定向到這個ASP頁面,傳遞你想要的圖像。 – gustavodidomenico

+0

我試圖無休止地獲取response.transmitfile方法來處理aspx頁面的Page_Load事件。你說的是我試過的,直到進入元刷新標籤。 –