2008-08-15 11 views
5

Im Grunde etwas besser als das:Was ist der beste Weg, um eine Datei über einen HTTP POST mit einem Webformular hochzuladen?

<input type="file" name="myfile" size="50"> 

Zunächst einmal die browse Taste schaut auf jedem Browser unterschiedlich. Anders als die submit Schaltfläche auf einem Formular, müssen Sie mit etwas hack-y Weg kommen, um es zu stylen.

Zweitens gibt es keine Fortschrittsanzeige, die zeigt, wie viel von der Datei hochgeladen wurde. In der Regel müssen Sie eine Art Client-Side-Way implementieren, um mehrere Submits zu deaktivieren (z. B. den Submit-Button auf einen deaktivierten Button mit "Form submitting ... please wait" zu setzen) oder eine riesige Warnung aufblitzen.

Gibt es irgendwelche guten Lösungen, die nicht Flash oder Java verwenden?

Yaakov: Dieses Produkt scheint genau das zu sein, was ich suche, aber die Kosten sind $ 1000 und speziell für ASP.NET. Gibt es Open-Source-Projekte, die die gleiche oder ähnliche Funktionalität abdecken?

Antwort

9

In Datei-Upload-Boxen befinden wir uns gerade, wenn Sie keine anderen Technologien wie Flash, Java oder ActiveX verwenden möchten.

Mit plain HTML sind Sie ziemlich beschränkt auf die Erfahrung, die Sie beschrieben haben (keine Fortschrittsbalken, doppelte Submits, etc). Wenn Sie bereit sind, etwas Javascript zu verwenden, können Sie einige der Probleme lösen, indem Sie das Feedback geben, dass das Hochladen stattfindet und sogar showing the upload progress (es ist ein Hack, weil Sie einen vollen Hin- und Rückweg zum Server nicht machen sollten und zurück, aber zumindest funktioniert es).

Wenn Sie bereit sind, Flash zu verwenden (das überall und auf vielen Plattformen verfügbar ist), können Sie alle diese Probleme meistern. Ein schnelles Googeln ergab sich twosuch Komponenten, beide frei und Open Source. Ich habe sie nie benutzt, aber sie sehen gut aus. BTW, Flash ist auch nicht ohne Probleme, zum Beispiel bei der Verwendung der Multi-Datei-Uploader für die Freigabe von Dias stürzte der Browser ständig auf mich :-(

Wahrscheinlich ist die beste Lösung derzeit dynamisch zu erkennen, wenn der Benutzer Flash hat, und wenn es der Fall ist, ihr die Flash-Version des Uploader geben, während es immer noch möglich macht man die grundlegenden HTML zu wählen.

HTH

0

Es ist wahr, die Datei Upload-Kontrolle ist definitiv hinter den Zeiten. Hoffentlich wird dies in einer zukünftigen asp.net-Version angesprochen werden.

Obwohl es etwas Geld kostet, habe ich die Telerik upload control gefunden, um alle Funktionalität zu haben, die Sie suchen, einschließlich Styling und Fortschritte Updates (es optimiert auch Speicher für große Uploads).

1

Sie konnten einen Blick auf das Fancy Upload Skript haben. Obwohl es verwendet flash es sieht immer noch gut aus

1

Das Problem hier ist, dass die b Rowser arbeiten speziell, um alles zu blockieren, was die grundlegende Steuerung der Datei-Upload-Eingabe verändert. Sie können es nicht mit Javascript zum Beispiel ändern.

Der Grund ist Sicherheit - wenn ich es Skript könnte ich eine Seite erstellen, die, wenn Sie es besuchte, schickte mir verschiedene Dateien von Ihrer Festplatte. Nicht nett.

Momentan gibt es verschiedene Problemumgehungen, aber sie unterscheiden sich zwischen IE und FX (ich weiß nichts über Safari, Opera usw.).

Schauen Sie, was http://www.gmail.com in IE und FX tut, wenn Sie etwas an eine E-Mail anhängen.

Ich will diesen Müll "Browse" Button sehen - es sagt mir, dass ich nichts unerwartetes lassen werde.

Verwandte Themen