我正在使用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()不是“”。
如何进行正确的验证?
答案 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_url
为null
或,则表示您正在删除该文件""
。这种情况总是如此,因为它不能同时是null
和""
。
你应该写!String.IsNullOrEmpty(service.image_url)
,正如我在第一个答案中写的那样。