Ajax File upload mit jQuery – ohne DWR
Java, PHP, Web Entwicklung November 16th, 2008Ajax ist eine tolle Erfindung – bis auf ein paar „Kleinigkeiten“. Z.B. ist nicht vorgesehen einen Dateiupload mittels Ajax zu realisieren. Da muss schon ein echtes Formular her.
Doch wenn dennoch eine Datei im Hintergrund hochgeladen werden soll – also ein „echter“ Ajax File upload realisiert werden soll – greift man in die kreative Trickkiste. Die üblichen Verdächtigen für solche Aufgaben sind DWR, jQuery, Dojo. DWR bringt in der Inkarnation 3.0 dann auch Support für Ajax Fileupload, inclusive einem Mapper. Also zurück zu den Basics – was tun, wenn ein XmlHttpRequest nicht da ist? Richtig! Unsichtbares iframe nehmen.Das ganze muss etwas getrickst werden, damit auch wirklich alles bei dem Ajax Dateiupload gut geht – auf das Timing kommts an. Am einfachsten ist das mit jQuery:
- An den submit Event des per Ajax abzuschickenden Formulars hängen und dort folgendes ausführen:
- Unsichtbares IFRAME erzeugen
- An das IFRAME einen load-handler hängen: dieser wird aufgerufen wenn das Formular (iframe) abgeschickt ist – dieser räumt das iframe wieder auf und benachrichtigt handler
- Das iframe als target von dem abzuschickenden Formular setzen
Das ganze im Quellcode mit jQuery und Ausgabe für die Firebug Firefox Konsole, um den Ajax Upload zu verfolgen:
console.log("jquery setup");
jQuery("#logoUploadForm").submit( function(data)
{
var submittingForm = jQuery( this );
var frameName = ("upload"+(new Date()).getTime());
var uploadFrame = jQuery("<iframe name=\""+frameName+"\" />");
console.log(„submitting form“);
uploadFrame.css(„display“, „none“);
uploadFrame.load(function(data){
//submit is complete here
jQuery(‚#logoProgress‘).text(‚Your file was uploaded successfully‘).show().fadeOut(5000);
setTimeout(function(){
console.log(„removing temp frame“);
uploadFrame.remove();},100);
});
jQuery(„body:first“).append(uploadFrame);
//setup complete
submittingForm.attr(„target“, frameName);
});
Behandelt werden muss der Upload dann mit den „üblichen“ Mitteln. PHP / Zend Framework, Java und Commons Fileupload / Spring Framework, oder was einem sonst in den Sinn kommt.
März 4th, 2009 at 17:56
Damit kann doch so ansich erstmal niemand was mit anfangen.
Ein richtiges Beispiel wäre da um einiges hilfreicher.
März 4th, 2009 at 18:09
Danke für deinen Kommentar. Ich habe dir ein vollständig funktionierendes Ajax Upload Beispiel an Deine E-Mail Adresse geschickt.
Ich hoffe es hilft weiter und du kannst damit einen Ajax Fileupload implementieren.
März 8th, 2009 at 03:20
warum postest du hier nicht das script einfach anstatt es per mail zu versenden?
März 16th, 2009 at 14:36
Hallo,
ich denke mal, damit nicht jeder einfach ein Bild hochlädt, oder andere nette Sachen…
P.S.:
Das Script hätte ich auch ganz gerne…
Alternativ wäre es natürlich toll, den Quell-Text hier zu veröffentlichen…
Lg Frank
März 25th, 2009 at 09:21
Hallo,
das ganze klingt wirklich äußerst interessant.
Es wäre aber wirklich hilfreich, wenn du einen kompletten Beispielquelltext mit HTML hier veröffentlichst.
Ein Beispielcode würde auch deinen Eintrag „Fileupload für Bilder mit jQuery – dank Ajax mit Vorschaufunktion“ aufwerten.
April 7th, 2009 at 10:49
Hallo,
kannst du nicht einfach den Quellcode (inklusive HTML für das Formular etc) in eine txt. einbauen und hier verlinken?
April 21st, 2009 at 00:06
Hallo,
schade, das es kein Beispiel online gibt. Wäre nett, wenn ich das Beispiel per Mail zu gesendet bekommen könnte. Vielen Dank im Voraus.
Grüße Elso
April 22nd, 2009 at 16:09
auch ich koennte ein jquery file upload grad gut brauchen. brauche nicht mal irgendwelchen visuellen schnicki schnacki. wenn du es nur per email schicken willst, hast du ja jetzt meine adresse 😉
April 22nd, 2009 at 16:10
ist schon ein wenig frech zu dem suchbegriff so gut zu ranken und dann wird das elementare im artikel aber einfach weggelassen ;-))
April 24th, 2009 at 14:21
Ich mach mal ein Beispiel fertig, wenn ich etwas Zeit über hab und stell es dann hier rein.
Die eigentlichen Ideen für den „Ajax“ Fileupload stehen aber so im Artikel, dass es eigentlich jeder nachbauen können sollte.
Wenn jemand dem „mehr Zeit“ nachhelfen möchte, ich für Spenden offen 🙂
November 26th, 2009 at 11:52
toll bis heute ist noch kein beispiel online geschweige den der quelltext
Januar 19th, 2010 at 21:33
Moin,
danke für die Anregung. Ich habe auf Basis dessen einen Artikel inkl. funktionierendem Beispiel geschrieben. Dieser kann auf meinem Blog gelesen werden. http://blog.gockeln.com
Gruß,
Arne
Juli 25th, 2010 at 15:07
Am A*** die Waldfee,
genau das, was ich gebraucht habe =]
Danke Dir!
Beste Grüße
Bastian