Frage

Ich habe ein Formular auf einer HTML-Seite, die ein Benutzer verwenden muss eine Datei, die Beiträge zu einer ASPX-Seite hochladen. In dem Code-behind, mag ich testen, ob eine Datei geladen tatsächlich wurde.

if (Request.Files.Count > 0)
{
    DoStuff(Request.Files[0]);
}
else
{
    throw new Exception("A CSV file must be selected for upload.");
}

Ich bin nie auf die sonst zu bekommen. Ist das nur, wie ASP.NET funktioniert? Wenn ich ein Eingabeelement vom Typ Datei haben, ist es immer eine „Datei“ gehen zu laden, auch wenn man nicht aktiviert ist?

Was ist der richtige Weg, dies zu tun? Vielleicht ist das?

if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
{
    DoStuff(Request.Files[0]);
}
else
{
    throw new Exception("A CSV file must be selected for upload.");
}
War es hilfreich?

Lösung

Vielleicht nur dies tun:

if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
{
    DoStuff(Request.Files[0]);
}
else
{
    throw new Exception("A CSV file must be selected for upload.");
}

Andere Tipps

Request.Files.Count enthält immer die Nr. von <input type="file"> Elementen in der Form, in einem Key:Value Speicher eingewickelt.

Wenn also Ihre informierte Form keine <input type="file">-Tags enthält, dann wird Request.Files.Count 0 zurück.

Jeder Key ist die name der <input type="file" name="OneOfTheKeys"> und der Wert ist vom Typ HttpPostedFileWrapper.

Siehe hier um zu erfahren, HttpPostedFileWrapper.

Sie sollten den Fileupload-Steuerelement und die Prüfung .HasFiles verwenden, um zu sehen, ob etwas hochgeladen wurde.

http://msdn.microsoft. com / en-us / library / system.web.ui.webcontrols.fileupload.aspx

Ich würde auch sicherstellen, dass die Daten durch die .count Methode ist Rückkehr ist kein String. Ein String-Wert von ‚0‘ ist immer größer als ein Wert von 0 int; das würde immer true zurück, in diesem Zustand.

Ich würde versuchen, die .count Rückkehr als int typecasting, um sicherzustellen, dass die richtige Art verglichen werden. Selbst ein String '-1' hat einen höheren Bit-Wert als int Null.

nur so ein Gedanke, wenn ich falsch sein könnte ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top