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
,因为它没有这个问题。但是,我们的回答都没有提到可能发生的其他异常,比如他没有权限或者文件设置为只读。