C# 删除目录中的特定文件

C# 删除目录中的特定文件,c#,asp.net,C#,Asp.net,我正在使用FileUpload控件将PDF文件上载到文件夹中,方法如下: string pdfFilPath = Path.GetFileName(FileUpload1.PostedFile.FileName.ToString()); string pdfPath = Server.MapPath(@"~/PDF/" + pdfFilPath); FileUploadFoto.PostedFile.SaveAs(pdfPath); 但与此同时,我正在为该文件在数据库中插入Id、Descrip

我正在使用
FileUpload
控件将PDF文件上载到文件夹中,方法如下:

string pdfFilPath = Path.GetFileName(FileUpload1.PostedFile.FileName.ToString());
string pdfPath = Server.MapPath(@"~/PDF/" + pdfFilPath);
FileUploadFoto.PostedFile.SaveAs(pdfPath);
但与此同时,我正在为该文件在数据库中插入
Id
Description
PDFUrl

SqlCommand cmd = new SqlCommand("INSERT INTO Book(Description, PDFUrl) 
  VALUES (''' + textBoxDescription.Text + "','" + "~/PDF/" + pdfFilPath + "')", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
如果我从数据库中选择所有列并在
网格视图中显示它们,它们将显示如下:

ID Description PDFUrl 1 In this book... ~/PDF/jQuery in Action.pdf ID描述PDFUrl 在这本书中~/PDF/jQuery-in-Action.PDF 现在,如果我想删除一篇书评,我所做的就是
(“从书中删除,其中Id='”+textBoxId.Text+”,conn),但这将仅从数据库中删除
Id
说明
PDFUrl

public void DeleteFile(string id)
{
FileInfo fi = new FileInfo(Server.MapPath(PDFUrl));
fi.Delete;

SqlComand cmd = new SqlComand("DELETE FROM Book Where Id='" + textBoxId.Text + "'", conn);
cmd.ExecuteNonQuery();
}

我的问题是:如何在从数据库中删除评论的同时删除PDF文件?

如果您只有ID,那么首先根据ID查询数据库中的PDFUrl

然后:

资料来源:


此外,您还应该根据上解释的原因使用。

您可以创建一个从目录中删除文件的方法,然后从数据库中删除该文件

public void DeleteFile(string id)
{
FileInfo fi = new FileInfo(Server.MapPath(PDFUrl));
fi.Delete;

SqlComand cmd = new SqlComand("DELETE FROM Book Where Id='" + textBoxId.Text + "'", conn);
cmd.ExecuteNonQuery();
}

但不要忘记,在删除文件之前,应该检查文件是否存在,否则会引发错误。如果用户刷新回发,则可能发生这种情况

if (File.Exists(Server.MapPath(PDFUrl))
{
    File.Delete(Server.MapPath(PdfUrl));
}

有什么原因不能从数据库中获取PDFUrl并执行简单的文件删除吗?您将使用GridView行删除事件。例如:
File.Delete(Server.MapPath(@“~/PDF/”+pdfFilPath))-代码取自OP发布的问题,用于上传文件。您是正确的。FWIW在我的回答中我使用了
FileInfo
,因为它没有这个问题。但是,我们的回答都没有提到可能发生的其他异常,比如他没有权限或者文件设置为只读。