Mein Freund sagte zuvor, dass hochgeladene Dateien nicht aktualisiert werden sollten. Die gewalttätigste Lösung besteht darin, im Internet nach verschiedenen JS-Bibliotheken zu suchen, die das Hochladen mehrerer Bilder, die Vorschau und sogar die Bildverarbeitung und andere Spezialeffekte bieten. Im Folgenden werde ich Ihnen zeigen, wie Sie die H5-Funktion FormData zum Hochladen von Dateien ohne Aktualisierung verwenden können.
Mein Freund sagte zuvor, dass ich Dateien ohne Aktualisierung hochladen kann. Die gewalttätigste Lösung besteht darin, im Internet nach verschiedenen JS-Bibliotheken zu suchen, die das Hochladen mehrerer Bilder, die Vorschau und sogar die Bildverarbeitung und andere Spezialeffekte bieten. Wenn Sie also keine Bibliotheken von Drittanbietern kontaktieren, können Sie dies dann mit Ajax tun? In Bezug auf dieses Problem besteht die von jemandem angegebene Lösung darin, iframe zu verwenden, worauf ich hier nicht näher eingehen werde. Aber Html5 ist eine gute Sache. FormData kann uns dabei helfen, Parameter und sogar Dateiressourcen zusammenzustellen. Auf diese Weise können wir mit $.ajax problemlos Hochladen ohne Aktualisierung durchführen. Natürlich wird auch kein Iframe benötigt.
Code
Das Folgende ist der Front-End-Teil.
<!DOCTYLE html> <meta charset=utf-> <head> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/../jquery.min.js"></script> </head> <script type="text/javascript"> $(function(){ $('#add').submit(function(){ var data = new FormData($('#add')[]); console.log(data); $.ajax({ url: 'ajax.php', type: 'POST', data: data, dataType: 'JSON', cache: false, processData: false, contentType: false, success:function(data){ //alert(data); alert("UploadFile Success"); } }); return false; }); }); </script> <form id='add'> <input type="text" name='book'></input> <input type="file" name='source'></input> <input type="submit"> </form>
Ich werde nicht näher auf den darin enthaltenen Code eingehen, sondern nur auf eine Codezeile eingehen
var data = new FormData($('#add')[0]);
FormData Es handelt sich um ein Formularobjekt, das key=>value für die Formularfelder des Formularobjekts bilden kann. Sollten wir also den zusätzlichen Schlüsselwert selbst zusammenfügen? Die Antwort lautet: Ja. Details finden Sie in Baidu FormData.
Und warum ist es $('#add')[0]?
Ich kann nur sagen js = jQuery[0];
PHP-Teil
<?php header('Content-Type:application/json; charset=utf-8'); echo json_encode(array($_FILES,$_REQUEST)); ?>
Dies ist nur ein Test. Wenn Sie etwas in $_FILES sehen, beweist das, dass wir hochladen können.
Test-Upload
Sie können sehen, dass die Ajax-Anfrage an ajax.php geht
Schauen Sie sich die Vorschau an und Sie können das sehen $_FILES wird zurückgegeben. Zugehörige Informationen.
Das oben Gesagte habe ich für Sie zusammengestellt. Ich hoffe, es wird Ihnen in Zukunft hilfreich sein.
Verwandte Artikel:
Eine detaillierte Erklärung der Verwendung verschiedener AJAX-Methoden
So verwenden Sie Ajax-Postdaten in Django, um einen 403-Fehler zu erhalten? Lösen Sie
Eine kurze Analyse des IE-Caching-Problems für Ajax-Anfrageergebnisse
Das obige ist der detaillierte Inhalt vonNutzen Sie die H5-Funktion FormData, um Dateien ohne Aktualisierung hochzuladen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!