2014-09-20 189 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(); 
}