Blake
Blake

Reputation: 764

File.Delete isn't working to delete image from sub folder

In our ASP.NET program a user can upload an image to a folder. The location of the image (including the name of the upload folder which is in the root directory) is stored as a variable called "path", ie. "Uploads/fileName.jpg".

To remove the image:

if (File.Exists("~/" + path))
                {
                    File.Delete("~/" + path);
                }

However, it fails to run because it can't verify that the file exists. Through some testing we noticed it's looking for "path" in the "system32" directory. Why would this be?

Upvotes: 2

Views: 2675

Answers (2)

Mike Miller
Mike Miller

Reputation: 16575

You need to use Server.Map path to ensure that the Tilde is resolved correctly.

MSDN Article is here -> http://msdn.microsoft.com/en-us/library/ms524632(v=vs.90).aspx

Your code would become

var fixedPath = Server.MapPath("~/" + path);

if (File.Exists(fixedPath))
{
  File.Delete(fixedPath);
}

Upvotes: 8

Anders Abel
Anders Abel

Reputation: 69260

The File class is not aware of the IIS directory mapping, so it won't understand ~ correctly. You have to first use a method to map the app relative path to a local path with Server.MapPath

Upvotes: 3

Related Questions