2009-04-11 6 views
0

Ich benutze ASP.net (2.0) mit VB.NET.Link zum Hochladen von Dateien wird gelöscht, wenn die Seite neu geladen wird, warum?

Ich habe ein Benutzerregistrierungsformular. Auf diesem Formular liefert der Benutzer alle seine Kontaktdaten und er kann ein Bild mit dem normalen Dateiupload-Steuerelement in ASP.net hochladen.

Das ist mein Problem.
Wenn auf der Seite etwas schief geht, gebe ich dem Benutzer eine Fehlermeldung, die sagt, was er weggelassen hat oder was schief gelaufen ist. Aber die Seite wird aktualisiert, wenn das passiert. JETZT ist der Link zu dem Bild, das der Benutzer ausgewählt hat, verschwunden. JETZT, wenn der Benutzer seinen Fehler behebt, denkt er, dass er ein Bild hochlädt, aber er hat es nie getan, denn wenn die Seite neu geladen wurde, löschte er den Link zu seinem Bild innerhalb des Datei-Upload-Steuerelements.

Hinweis: Der Benutzer muss kein Bild hochladen, daher wird kein Fehler angezeigt, wenn das Feld leer ist.

Wer hat eine Idee, was ich tun muss?

Antwort

3

Dieses Verhalten ist von Entwurf. Es ist eine Sicherheitseinschränkung, die von Browsern auferlegt wird, so dass alle Dateien von den Computern der Benutzer nur durch ihre explizite Aktion hochgeladen werden.

Wenn bei der Formularübermittlung etwas schief geht, sollten Sie den Benutzer darauf hinweisen, seine Datei erneut hochzuladen. Das ist der richtige Weg. Betrachten Sie es als eine Transaktion (alles oder nichts).

1

Aus Sicherheitsgründen kann niemand einen Wert in einem Dateifeld in HTML schreiben. Sie können die Datei hochladen, den Fehler melden und dem Benutzer eine Möglichkeit zum Abbrechen des Uploads geben. Edit: was Bobince in einer anderen Antwort ausführlicher beschreibt.

3

Ich glaube nicht, dass Sie viel tun können. Browser haben in den letzten Jahren das Dateiformular gesperrt, um Drive-by-Uploads zu verhindern. Ich hätte einen separaten Prozess zum Hochladen des Fotos.

4

Wer hat eine Idee, was ich tun muss?

Zwei übliche Ansätze:

  1. hinzufügen Client-Seite (JavaScript) Formular-Validierung, so dass für die Mehrheit der Menschen, wird ein Fehler Pop-up vor sie das Formular ausgefüllt haben, anstatt später, auf der Serverseite, zu welcher Zeit der Upload verloren gegangen ist.

  2. Geben Sie jeder Formularinstanz eine eindeutige ID. Wenn eine Datei in ein Formular mit einem Fehler hochgeladen wird, speichern Sie diese Datei auf dem Server und zeichnen Sie in der Datenbank auf, dass das Formular mit dieser ID eine angehängte Datei enthält. Geben Sie auf dem zweiten Formular die ID als verstecktes Feld ein und zeigen Sie visuell an, dass die hochgeladene Datei gespeichert wurde. Ziehen Sie die gemeldete Datei bei der Übermittlung heraus und hängen Sie sie an die neue Einreichung an.

Verwandte Themen