我对我的网址有一点疑问。
我在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 //
它在本地工作,但仍然不在服务器上......
答案 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”
更新: 确保您尝试将文件保存到的文件夹不是只读的,并且您有权在文件夹中创建文件。