下载硬盘上其他位置的文件

时间:2014-04-28 19:20:58

标签: c# asp.net

有一个aspx页面,向用户显示文件以供下载。 这些文件可以是任何扩展名,并且位于wwwroot文件夹之外。 它们以树视图显示。 我希望用户能够下载他们点击的任何文件。

我尝试了以下内容,但它只给了我一个aspx页面。

parent.Text是文件所在的文件夹。 node.Text是文件名。 所以这将包含类似c:\ dir \ text.txt

的内容
Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", Path.Combine(parent.Text, node.Text)));

2 个答案:

答案 0 :(得分:2)

文件名标头值表示要呈现给用户浏览器的名称(不是文件的实际路径)。

为了让用户接收文件,您必须将其输出到响应中。 TransmitFile方法对此有很大帮助。

Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", node.Text));

Response.TransmitFile(Path.Combine(parent.Text, node.Text));

Response.End();

答案 1 :(得分:0)

好的,根据我说的话。

在树视图节点上添加一个链接,以便在单击时它请求一个名为" fileHandler"的处理程序。与查询字符串中涉及的文件的ID。

例如,当滚动节点时,你会有类似" [你的网站名称] /filehandler.ashx?fileid =" guid | id"

然后按照以下方式实现处理程序:

http://aspnetupload.com/Quickstart/Download-From-File.aspx

使用处理程序时的一些优点包括不会产生下载页面生命周期的成本(即在跳出和更改标题之前页面上没有浪费的回发),并且文件服务功能就在它自己的位置。