在C#中删除文件

cor*_*ews 4 c# asp.net file

看起来它应该是一个非常简单的主题,所有的例子到处只是几行,但是没有像样的解释,因此我在没有解决方案的情况下继续遇到同样的错误.

简而言之,这部分应用就像这样运行

  1. 从db中提取图像
  2. 在临时文件夹中创建实际图像文件
  3. 创建带有图像的pdf
  4. 现在删除已创建的图像.

一切正常,直到删除.我一直在收到错误

InnerException:
System.ArgumentException:不支持URI格式.在System.IO.Path.NormalizePathFast(String path,Boolean fullCheck)...

我尝试了几种不同的方法来完成删除最新的存在:

foreach (string item in TempFilesList)
    {
        path = System.Web.HttpContext.Current.Application["baseWebDomainUrl"] + "/temp/" + item;
        fileDel = new FileInfo(path);
        fileDel.Delete();
    }
Run Code Online (Sandbox Code Playgroud)

在那之前的尝试是:

foreach (string item in TempFilesList)
    {
        File.Delete(System.Web.HttpContext.Current.Application["baseWebDomainUrl"] + "/temp/" + item);
    }
Run Code Online (Sandbox Code Playgroud)

TempFilesList是一个数组列表,包含要删除的图像的路径.

Dav*_*ier 13

您应该尝试调用Server.MapPath(path)来获取文件的"真实"路径.将它传递给File.Delete,它应该工作(假设文件权限等是正确的)

例如:

foreach (string item in TempFilesList)
{
    path = System.Web.HttpContext.Current.Application["baseWebDomainUrl"] + "/temp/" + item;
    path = Server.MapPath(path);
    fileDel = new FileInfo(path);
    fileDel.Delete();
}
Run Code Online (Sandbox Code Playgroud)


Ran*_*pho 7

您需要您创建的文件的实际文件路径,而不是您创建的路径的URL.您的代码创建了一个类似于" http://www.mywebsite.com/location/temp/filename.jpg " 的路径.

你需要一些看起来像"C:\ MyWorkingFolder\filename.jpg"的东西.

不过,我建议不要使用Server.MapPath.由于您是在自己的代码中自己创建文件,因此可以控制文件创建位置.相反,请使用它.将其存储在web.config中作为AppSettings键.

例如:

string basePath = ConfigurationManager.AppSettings["PdfGenerationWorkingFolder"];
foreach(string item in TempFilesList)
{
  File.Delete(basePath + item);
}
Run Code Online (Sandbox Code Playgroud)