2012-04-05 12 views
3

Ich habe diese Seite, auf der ein Benutzer Dokumente hochladen kann (mehrere Dokumente, Größe jeweils 10 MB). Es ist ein zweistufiger Prozess. Schritt 1 hat das Eingabeformular. Schritt 2 ist die Vorschau-Seite mit einem Absenden-Button.Hochladen von mehreren/großen Dateien

Wie soll ich mit dem Szenario umgehen, in dem der Benutzer den Browser auf der Vorschauseite schließt, ohne das Formular zu senden? Sollte ich die Dateien an einem temporären Speicherort nach Schritt 1 speichern? Ist das eine anständige Lösung?

Und was sind die besten Praktiken im Allgemeinen für das Hochladen (einigermaßen) großer Dateien?

Danke.

Antwort

0

Sie einen temporären Ordner verwenden können, um die Dateien zu speichern und die Dateien an ihren endgültigen Standort nur gegen Vorlage des Formulars kopieren .

In jedem Fall wäre es besser, einen Garbage Collector zu implementieren. Der Garbage Collector kann den temporären Ordner jede Nacht leeren. Wenn Sie jedoch einen Garbage Collector verwenden, können Sie Dateien identifizieren, die nicht gesendet wurden (z. B. wenn eine Zeile bei der Übergabe zu einer Datenbank hinzugefügt wird). Sie können die Dateien von Anfang an an ihrem endgültigen Speicherort ablegen und lassen der Müllsammler entfernt sie jede Nacht.

Das Hochladen großer Dateien kann mit einem JQuery UI-Plug-in, z. B. Uploadify: http://www.uploadify.com/, erfolgen. Sie sollten darauf achten, dass es Flash verwendet, was einerseits sehr gut zum Hochladen von großen Dateien ist, andererseits aber verhindert, dass Ihre Anwendung Apple-Geräte wie iPad unterstützt.

0

Wenn der Benutzer verlässt, lassen Sie ihn neu beginnen. Mehr als wahrscheinlich sind sie aus einem guten Grund gegangen. Wenn es einen Absturz gab, lassen Sie die Verantwortung auf sich beruhen. Wenn Sie Ihre Daten speichern, ohne dass diese übermittelt werden, können böswillige Benutzer Ihren Speicher ausnutzen.

Sie können auch in einen Prozess namens Chunking suchen.

Für eine eingehende Diskussion über das Hochladen von Dateien in MVC3 findet diese SO Beitrag: MVC 3 file upload and model binding

+0

"Wenn der Benutzer geht, dann lassen Sie sie von vorne beginnen." - Ich werde die Dateien nach Schritt 1 speichern müssen, oder? – user471317

+0

@ user471317 - Sie können das PRG-Muster verwenden, in dem die Dateien dann in 'TempData' platziert werden. Wenn Sie die Dateien nach Schritt 1 speichern, warum sollten sie in der Vorschau angezeigt werden? Gibt es über eine Abbrechen-Schaltfläche eine Löschfunktion? Wird eine Flagge gesetzt, wenn sie sich entscheiden zu akzeptieren? Der Grund, warum ich frage, ist, dass Sie einige Auditing durchführen müssen, um zu bestimmen, wie Sie Dateien entfernen, die nach Schritt 2 nicht festgeschrieben wurden. Und wenn der Benutzer in Schritt 2 nicht auf "Akzeptieren" klicken muss, werden sie es tun Schritt 1 und navigieren Sie woanders um Zeit zu sparen. –

+0

"Wenn Sie die Dateien nach Schritt 1 speichern, warum können sie dann eine Vorschau anzeigen?" - Ich bevorzuge es, Dateien nach Schritt 1 nicht zu speichern. Sie schlagen vor, ich speichere die Dateien in TempData nach Schritt 1? – user471317