2009-10-08 116 views
0

我正在使用LINQ從DataBase中檢索數據,相對於鏈接的變量名是「service」。ASP.Net檢查FileUpload控件是否爲空

upDocument是FileUpload控件的Id。

目標是在上傳新文件之前刪除舊文件。 這是我想出了這個代碼:

if ((service.image_url != null || service.image_url != "") && 
    (upDocument.FileName.Length != 0 || upDocument.PostedFile.ToString() != "")) 
{ 
    if (File.Exists(System.Web.HttpContext.Current.Server.MapPath(service.image_url))) 
    { 
      File.Delete(System.Web.HttpContext.Current.Server.MapPath(service.image_url)); 
    } 
} 

的問題,我有,是什麼althought被加載到文件上傳文件仍然被刪除。我做了一個斷點,並檢查出來......並理解我期待的FileName.Length不是0,並且postingFile.ToString()不是「」。

我該如何做出正確的驗證?

在此先感謝。

+1

你的第一個條件('service.image_url')應該使用和('&&'),而不是或('||')。但是,它實際上應該調用'String.IsNullOrEmpty'。 – SLaks 2009-10-08 17:26:39

+0

順便說一句,'upDocument.PostedFile.ToString()'將始終是'「HttpPostedFile」',因爲'HttpPostedFile'類不會覆蓋'ToString'。因此,檢查它沒有意義。您應該檢查'HasFile'。 – SLaks 2009-10-08 18:19:41

回答

4

檢查HasFile屬性,像這樣:

順便說一句,一個ASP.Net頁面中,你不需要寫System.Web.HttpContext.Current,所以你可以簡單地寫Server.MapPath

+0

thx的提示,但這不是答案:( – Marco 2009-10-08 17:22:01

+0

爲什麼不是答案? – SLaks 2009-10-08 17:24:13

+1

是的,他的回答聽起來對我來說是正確的,所以你可能需要澄清你的問題。 – Sterno 2009-10-08 17:36:08

0

您的問題是,你刪除的文件,如果service.image_urlnullOR,如果它是""。該條件將始終爲真,因爲它不能同時爲null""

你應該寫我的第一個答案寫的!String.IsNullOrEmpty(service.image_url)