Kiwimoisi
Kiwimoisi

Reputation: 4182

Relative, Direct URL

I have a little question about my URL .

I use a tree view on my asp page that's why I use this getcurrentdirectory .

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

So for the moment it's fine because i Can load all the files for a folder.

After I try to download the files when you click on it .

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

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

So I can retrieve the Path wich is the current directory . The method I use in my other page.

In the server.MapPatch should I put ~ also ? Because when I do that is works localy, but when I put this on my server , the downloading part doesn't work so I suppose this is a URL issue, I can't debug so I am really lost about this !

I changed some things :

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

So its returns the same thing .

So now in the server.MapPath the path equal something like Projects//Folder 1//

It works locally, but still not on the server ...

Upvotes: 1

Views: 202

Answers (1)

Mark
Mark

Reputation: 1748

Try this:

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

And also, as a best practice, don't use + to concatenate strings. You should use string.format, so I would write the above line as follows:

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

Just to help you understand your problem better, Server.MapPath will return you a physical file path on the server which corresponds to the virtual path on the web server. i.e. it converts "http://website.com/img.jpg" to something like "C:\mywebsite\img.jpg"

UPDATE: Make sure the folder you're trying to save the file to, is not read-only and you have permissions to create files in the folder.

Upvotes: 1

Related Questions