Ich wollte eine Möglichkeit finden, eine einzelne Datei* im Hintergrund hochzuladen, die automatisch nach der Dateiauswahl startet und keinen Flash-Uploader benötigt, also versuche ich, zwei großartige Mechanismen (jQuery.Form und JQuery MultiFile) zusammen zu nutzen. Ich habe nicht erfolgreich, aber ich bin ziemlich sicher, es ist, weil ich etwas grundlegendes fehlt.
Ich verwende einfach MultiFile und definiere das Formular wie folgt...
<form id="photoForm" action="image.php" method="post" enctype="multipart/form-data">
Die Schaltfläche für die Dateieingabe ist definiert als...
<input id="photoButton" "name="sourceFile" class="photoButton max-1 accept-jpg" type="file">
Und das Javascript ist...
$('#photoButton').MultiFile({
afterFileSelect: function(){
document.getElementById("photoForm").submit();
}
});
Das funktioniert perfekt. Sobald der Benutzer eine einzelne Datei auswählt, sendet MultiFile das Formular an den Server.
Wenn ich anstelle von MultiFile, wie oben gezeigt, eine Submit-Schaltfläche zusammen mit dem JQuery-Form-Plugin einfüge, die wie folgt definiert ist...
var options = {
success: respondToUpload
};
$('#photoForm').ajaxForm(options);
... das funktioniert auch perfekt. Wenn die Schaltfläche "Submit" angeklickt wird, wird das Formular im Hintergrund hochgeladen.
Ich weiß nur nicht, wie ich die beiden dazu bringen soll, zusammenzuarbeiten. Wenn ich Javascript verwende, um das Formular zu übermitteln (wie im MultiFile-Beispiel oben gezeigt), wird das Formular übermittelt, aber die JQuery.Form-Funktion wird nicht aufgerufen, sodass das Formular nicht im Hintergrund übermittelt wird.
Ich dachte, dass ich vielleicht die Formularregistrierung wie folgt ändern müsste...
$('#photoForm').submit(function() {
$('#photoForm').ajaxForm(options);
});
...aber das hat das Problem nicht gelöst. Dasselbe gilt, wenn ich .ajaxSubmit anstelle von .ajaxForm ausprobiere.
Was übersehe ich?
- BTW: Ich weiß, es mag seltsam klingen, MultiFile für Uploads einzelner Dateien zu verwenden, aber die Idee ist, dass die Anzahl der Dateien dynamisch ist und vom Konto des Benutzers abhängt. Ich beginne also mit einer, aber die Anzahl ändert sich je nach Bedingungen.