Wie um zu überprüfen, ob FileUpload-Steuerelement leer ist?
Verwende ich LINQ, um abrufen von Daten aus der Datenbank, der name der variable relative link ist "service".
den upDocument ist die Id von einem FileUpload-control.
Ziel ist es, löschen Sie die alte Datei vor dem hochladen einen neuen.
Dies ist der code, den ich kam mit:
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));
}
}
Das problem, das ich habe, ist, dass, obwohl nichts geladen wird, um den FileUpload die Datei noch gelöscht werden. Ich machte einen Haltepunkt und es ausprobiert... und im Gegensatz zu dem, was ich erwartet hatte, das mit dem Namen.Länge ist nicht 0, und die postedFile.ToString() ist nicht "".
Wie kann ich eine korrekte Validierung?
- Ihre erste Bedingung (
service.image_url
) sollte die Verwendung ein und (&&
), nicht ein oder (||
). Allerdings, sollte es tatsächlich rufenString.IsNullOrEmpty
. - Übrigens
upDocument.PostedFile.ToString()
immer"HttpPostedFile"
weil dieHttpPostedFile
Klasse nicht überschreibenToString
. Daher gibt es keinen Punkt in der Prüfung. Sie sollten überprüfenHasFile
statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie die
HasFile
Eigenschaft, wie das ist:Durch die Art und Weise, innerhalb eines ASP.Net Seite, brauchen Sie nicht zu schreiben
System.Web.HttpContext.Current
, so können Sie einfach schreibenServer.MapPath
.Dein problem ist, dass Sie das löschen der Datei, wenn
service.image_url
istnull
ODER wenn es""
. Diese Bedingung wird immer wahr sein, denn es kann nicht sein, beidenull
und""
zur gleichen Zeit.Sollten Sie schreiben
!String.IsNullOrEmpty(service.image_url)
, wie ich schrieb in meiner ersten Antwort.