2014-09-20 173 views
-1

我上传PDF文件转换为以这种方式使用FileUpload控制文件夹的特定文件:删除目录

string pdfFilPath = Path.GetFileName(FileUpload1.PostedFile.FileName.ToString()); 
string pdfPath = Server.MapPath(@"~/PDF/" + pdfFilPath); 
FileUploadFoto.PostedFile.SaveAs(pdfPath); 

但在同一时间,我插入IdDescriptionPDFUrl在数据库中本文件:

SqlCommand cmd = new SqlCommand("INSERT INTO Book(Description, PDFUrl) 
    VALUES (''' + textBoxDescription.Text + "','" + "~/PDF/" + pdfFilPath + "')", conn); 
conn.Open(); 
cmd.ExecuteNonQuery(); 
conn.Close(); 

如果我从数据库中选择所有列,并将其显示在GridView,它们显示如下:

ID  Description    PDFUrl 
1  In this book...  ~/PDF/jQuery in Action.pdf

现在,如果我想删除一个书评,我要做的就是("DELETE FROM Book Where Id='" + textBoxId.Text + "'", conn);,但这将只删除IdDescriptionPDFUrl从数据库中。

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

+0

是否有一个原因,你不能从数据库中获取PDFUrl并做一个简单的文件删除?您将使用GridView RowDeleting事件。 – 2014-09-20 16:28:28

+0

Like:'File.Delete(Server.MapPath(@“〜/ PDF /”+ pdfFilPath));' - 取自OP发布的用于上传文件的问题的代码。 – 2014-09-20 16:35:10

回答

0

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

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

你是对的。在我的答案FWIW我用'FileInfo'因为它没有这个问题。但是,我们的答案都不能解决可能发生的其他异常,例如他没有权限或文件设置为只读。 – MikeSmithDev 2014-09-20 23:52:13

0

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

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(); 
}