无法删除文件(jpeg)

时间:2010-03-24 13:56:01

标签: c# file-io

我实施了帮助来显示来自here的缩略图。缩略图旁边有一个调用此控制器的删除链接:

// HTTP POST: /Photo/Delete/1
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(int id, string confirmButton)
{
    var path = "~/Uploads/Photos/";            

    Photo photo = photoRepository.GetPhoto(id);

    if (photo == null)
        return View("NotFound");            

    FileInfo TheFile = new FileInfo(Server.MapPath(path + photo.PhotoID + ".jpg"));    

    if (TheFile.Exists)
    {
        photoRepository.Delete(photo);
        photoRepository.Save();

        TheFile.Delete();
    }
    else return View("NotFound"); 

    return View();
}

如果我禁用显示缩略图,则会删除该文件。否则它会发送错误:

  

System.IO.IOException:进程无法访问文件'C:\ Documents   和Settings \ ilija \ My Documents \ Visual   工作室   2008 \项目\ CMS \ CMS \上传\照片\ 26.jpg”   因为它被另一个人使用   过程

我也不知道我的文件删除功能是否写得正确。在网上搜索,我看到每个人都使用File.Delete(TheFile);,我无法使用TheFile.Delete();。使用File.Delete(TheFile);时出现以下错误:

  

错误1'System.Web.Mvc.Controller.File(string,   string,string)'是'方法',其中   在给定的情况下无效   上下文C:\ Documents and   设置\ ilija \ My Documents \ Visual   工作室   2008 \ Projects \ CMS \ CMS \ Controllers \ PhotoController.cs 109 17 CMS

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

这是因为,正如它所说,另一个进程已经处理了您的文件,因此您无法删除它。在这种情况下,缩略图生成器会抓取您文件的句柄,从而阻止您删除它。您必须关闭程序中文件的所有句柄才能将其删除。