2012-01-12 70 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