2009-08-14 17 views
6

Ich plane asynchron Dateiuploads. Das heißt, die Datei sollte in ein JSP oder Servlet hochgeladen werden und etwas an die html/jsp-Seite zurückgeben, ohne die Originalseite neu zu laden. Es sollte wie ein AJAX-Anruf geschehen. Gibt es eine Möglichkeit, dies in AJAX oder auf andere Weise zu tun?Asynchrone Datei-Upload (AJAX-Datei-Upload) mit JSP und Javascript

Antwort

-1

Ich glaube nicht, dass AJAX Dateiuploads verarbeiten kann, aber dies kann mit Bibliotheken erreicht werden, die Flash nutzen. Ein weiterer Vorteil der Flash-Implementierung ist die Möglichkeit, mehrere Dateien gleichzeitig zu erstellen (wie Google Mail).

SWFUpload ist ein guter Anfang: http://www.swfupload.org/documentation

jQuery und einige der anderen Bibliotheken haben Plugins, die Hebelwirkung SWFUpload. Bei meinem letzten Projekt haben wir SWFUpload und Java problemlos benutzt.

auch nützlich und lohnt sich, in ist Fileupload Apache: http://commons.apache.org/fileupload/index.html

+0

Es ist tatsächlich möglich, asynchrone Dateiuploads ohne Flash zu machen; z.B. Google Mail. – DanM

+2

Wenn ich mich nicht irre, verwendet Google Mail auch Flash. – doomspork

+2

Hinweis aus der Zukunft: Flash ist fast nicht vorhanden wegen der Beliebtheit von Mobiltelefonen. Siehe diese Antwort: http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload – hitautodestruct

0

Die neueste dwr (http://directwebremoting.org/dwr/index.html) hat Ajax-Datei-Uploads, komplett mit Beispielen und netten Sachen für Benutzer (wie Fortschrittsanzeigen und so).

Es sieht ziemlich gut aus und dwr ist ziemlich einfach zu bedienen, so wird dies auch ziemlich gut sein.

+0

Ähnliches für .net? – user20358

+0

Ich weiß nicht - nur codiertes Java für Webserver so Krieg – laura

4

Die beiden gemeinsame Ansätze sind die Form einer invisible iframe einreichen oder eine Flash-Steuerung wie YUI Uploader zu verwenden. Sie könnten auch Java anstelle von Flash verwenden, aber dies hat eine engere Installationsbasis.

(Schande über die Layout-Tabelle im ersten Beispiel)