Heim  >  Artikel  >  Web-Frontend  >  Nutzen Sie die H5-Funktion FormData, um Dateien ohne Aktualisierung hochzuladen

Nutzen Sie die H5-Funktion FormData, um Dateien ohne Aktualisierung hochzuladen

亚连
亚连Original
2018-05-24 17:20:102028Durchsuche

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(){
  $(&#39;#add&#39;).submit(function(){
    var data = new FormData($(&#39;#add&#39;)[]); 
    console.log(data);
    $.ajax({ 
      url: &#39;ajax.php&#39;, 
      type: &#39;POST&#39;, 
      data: data, 
      dataType: &#39;JSON&#39;, 
      cache: false, 
      processData: false, 
      contentType: false, 
      success:function(data){ 
        //alert(data);
        alert("UploadFile Success");
      }  
    }); 
    return false;  
  });
});
</script>
<form id=&#39;add&#39;>
<input type="text" name=&#39;book&#39;></input>
<input type="file" name=&#39;source&#39;></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($(&#39;#add&#39;)[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(&#39;Content-Type:application/json; charset=utf-8&#39;);
  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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn