如何使用asp.net网站从服务器下载文件

时间:2011-11-29 15:01:33

标签: c# asp.net

我正在尝试从服务器下载文件,我收到访问被拒绝错误,路径与我提供的输入不同,如何传递正确的路径

protected void Page_Load(object sender, EventArgs e)
{
    string FileLoc = @"~/Upload/1984_Apple_Macintosh_Commercial.mp4";
    DownloadData(FileLoc);
}

public void DownloadData(string address)
{
    var path = Path.Combine(Request.PhysicalApplicationPath, address);
    using (var client = new WebClient())
    {
        client.DownloadFile(path, "1984_Apple_Macintosh_Commercial.mp4");
    }  
} 
  

访问路径'C:\ Program Files(x86)\ Common Files \ Microsoft   共享\ DevServer \ 10.0 \ 1984_Apple_Macintosh_Commercial.mp4'被拒绝。

更新代码

protected void Page_Load(object sender, EventArgs e)

{
    if (!IsPostBack)
    {
        string FileLoc = @"c:\Files\1984_Apple_Macintosh_Commercial.mp4";
        DownloadData(FileLoc);
    }
}
public void DownloadData(string address)
{
    var path = Path.Combine(Request.PhysicalApplicationPath, address);
    WebClient Client = new WebClient();
    Client.DownloadFile(path, @"c:\Files\1984_Apple_Macintosh_Commercial.mp4");
}

2 个答案:

答案 0 :(得分:0)

client.DownloadFile()中的第二个参数表明该文件实际上位于错误中指定的文件夹中。我想您使用的是Windows 7,并且开发环境(Visual Studio?)没有以管理员权限启动,因此您无法保存在该文件夹中。

作为第二个参数,请将路径更改为硬盘驱动器上的绝对路径,您无需管理员权限即可访问。

示例:

client.DownloadFile(path, "c:\files\1984_Apple_Macintosh_Commercial.mp4")暗示c:\files存在。

答案 1 :(得分:0)

看起来你在这里有些困惑。 WebClient用于从服务器下载文件。您似乎在服务器端代码中使用它来从同一服务器“下载”文件;这没有意义。

如果您想编写代码以将文件从您的网站发送到客户端(浏览器),可以通过不同的方式实现此目的,例如: Response.TransmitFile方法(参见样本here