相对的直接URL

时间:2011-12-05 11:44:04

标签: c# asp.net file download

我对我的网址有一点疑问。

我在asp页面上使用树视图,这就是我使用此getcurrent目录的原因。

//DirectoryInfo di = new DirectoryInfo("~" + GetTheCurrentDirectory
(selectedNodeValue));
~ = C://Inetpub//WwwRoot//
GetTheCurrentDirectory = Projects//Folder1//

所以目前这很好,因为我可以加载文件夹的所有文件。

单击后尝试下载文件后。

protected void Page_Load(object sender, EventArgs e)
{
    string path = Request["path"].ToString();
    string filename = Request["file"].ToString();

    fileDownload(filename, Server.MapPath("~\\" + path + filename));
}

所以我可以检索当前目录的Path。我在其他页面中使用的方法。

在server.MapPatch中我应该放〜也?因为当我这样做是有效的,但当我把它放在我的服务器上时,下载部分不起作用所以我想这是一个URL问题,我无法调试所以我真的迷失了这个!

我改变了一些事情:

DirectoryInfo di = new DirectoryInfo(GetTheCurrentDirectory(selectedNodeValue));

所以它返回同样的东西。

所以现在在server.MapPath中,路径等于Projects // Folder 1 //

它在本地工作,但仍然不在服务器上......

1 个答案:

答案 0 :(得分:1)

试试这个:

fileDownload(filename, Server.MapPath("~/" + path + filename));

另外,作为最佳实践,不要使用+来连接字符串。你应该使用string.format,所以我会按如下方式编写上面的代码:

fileDownload(filename, Server.MapPath(string.format("~/{0}{1}", path, filename)));

为了帮助您更好地理解您的问题,Server.MapPath将返回服务器上的物理文件路径,该路径对应于Web服务器上的虚拟路径。即它将“http://website.com/img.jpg”转换为“C:\ mywebsite \ img.jpg”

更新: 确保您尝试将文件保存到的文件夹不是只读的,并且您有权在文件夹中创建文件。