如何检查FileUpload控件是否为空?

时间:2009-10-08 17:02:35

标签: c# asp.net file-upload

我正在使用LINQ从数据库中检索数据,相对于链接的变量名称是“service”。

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

我遇到的问题是,虽然没有任何内容被加载到FileUpload,但文件仍然被删除。我做了一个断点并检查出来......与我期望的FileName.Length不是0相反,而且PostedFile.ToString()不是“”。

如何进行正确的验证?

2 个答案:

答案 0 :(得分:6)

检查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

答案 1 :(得分:0)

您的问题是,如果service.image_urlnull ,则表示您正在删除该文件""。这种情况总是如此,因为它不能同时是null""

你应该写!String.IsNullOrEmpty(service.image_url),正如我在第一个答案中写的那样。