Как проверить, что элемент управления FileUpload пуст? - PullRequest
0 голосов
/ 08 октября 2009

Я использую LINQ для извлечения данных из базы данных, имя переменной относительно ссылки - "service".

upDocument - это идентификатор элемента управления FileUpload.

Цель состоит в том, чтобы удалить старый файл перед загрузкой нового. Вот код, который я придумал:

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

Проблема, с которой я столкнулся, заключается в том, что, хотя в FileUpload ничего не загружается, файл все равно удаляется. Я сделал точку останова и проверил ее ... и вопреки тому, что я ожидал, FileName.Length не равно 0, а postsFile.ToString () не равно "".

Как мне сделать правильную проверку?

Ответы [ 2 ]

6 голосов
/ 08 октября 2009

Проверьте свойство HasFile, например:

if (!String.IsNullOrEmpty(service.image_url) && upDocument.HasFile) { 
    if (File.Exists(Server.MapPath(service.image_url)))
        File.Delete(Server.MapPath(service.image_url));
}

Кстати, на странице ASP.Net вам не нужно писать System.Web.HttpContext.Current, поэтому вы можете просто написать Server.MapPath.

0 голосов
/ 08 октября 2009

Ваша проблема в том, что вы удаляете файл, если service.image_url равен null ИЛИ , если он "". Это условие всегда будет истинным, поскольку оно не может быть одновременно null и "".

Вы должны написать !String.IsNullOrEmpty(service.image_url), как я написал в своем первом ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...