2012-01-12 81 views
0

我想解決以下問題:從鏈接ASP.NET下載菜單

我有一個下載按鈕,單擊時,重定向到文件下載。 示例:

Response.Redirect(「http://www.example.com/data/file1.zip」);

當這個按鈕被點擊時,你會得到一個菜單,你可以按下OK來下載。

但是,如果我有以下幾點:

的Response.Redirect( 「http://www.example.com/data/textfile.txt」);

我得到一段文字。我不想要這種行爲。

當我點擊下載文件時,如何使菜單彈出所有情況。

我試過如下:

Response.ContentType = "application/octet-stream"; 

Response.Redirect("http://www.example.com/data/" + filename); 

但如果我點擊它,我還是剛剛得到的TXT的內容瀏覽器。有什麼方法可以檢查這個MIME類型是否真的被應用?

回答

4

您需要設置響應類型,

八位字節流應該強迫用戶打開或保存文件

public class Download : IHttpHandler { 
    public void ProcessRequest (HttpContext context) { 
     string filename = context.Request.QueryString["file"]; 
     string file = context.Server.MapPath(filename); 
     context.Response.ContentType = "application/octet-stream"; 
     context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename)); 
     try 
     { 
      context.Response.TransmitFile(file); 
     } 
     catch (Exception ex) 
     { 
      SendFailedDownload(filename, context); 
     } 
     finally 
     { 
     } 
    } 
} 
+2

更好的是考慮寫一個ashx的處理程序,然後你不需要重定向響應。 – kolin 2012-01-12 11:51:14

+0

實現它! – NomenNescio 2012-01-12 11:57:45

0

,而不是做好上面的只是使用鏈接標記並將href設置爲文件的url。這不需要重定向或調整上下文。

<a href="<link to file>" title="">Download me </a> 

,這將提示您保存或打開......爲txt文件

不工作,不工作的其他文件,即使

+0

這實際上會打開.txt文件到他想要避免的同一個窗口中。在使用Kolin的答案時,它會強制瀏覽器打開保存/打開對話框。 – 2012-01-12 13:20:50

+0

你是對的,這不適用於txt文件,必須讀過那部分;) – Tjassens 2012-01-12 13:43:40