Maison > interface Web > Tutoriel H5 > Téléchargement de fichiers sans actualisation à l'aide de PHP et HTML5 FormData

Téléchargement de fichiers sans actualisation à l'aide de PHP et HTML5 FormData

不言
Libérer: 2018-06-28 15:15:15
original
1310 Les gens l'ont consulté

Cet article présente principalement le tutoriel d'utilisation de PHP et HTML5 FormData pour implémenter le téléchargement de fichiers sans actualisation. Cet article détaille d'abord les étapes d'écriture du programme, et donne enfin un exemple complet. Les amis qui en ont besoin peuvent s'y référer.

Aucun L'actualisation du téléchargement de fichiers est un problème courant et quelque peu compliqué. Une solution courante consiste à construire une iframe.

En HTML5, une API d'objet FormData est fournie. Grâce à FormData, une demande de formulaire peut être facilement construite et envoyée via XMLHttpRequest. Il est également possible d'envoyer des fichiers via l'objet FormData, donc le téléchargement sans actualisation devient très simple.

Alors comment utiliser FormData ? Script House en donnera une brève introduction ci-dessous.

1. Construire l'objet FormData

Pour obtenir un objet FormData, c'est très simple :

var fd = new FormData();
Copier après la connexion

L'objet FormData ne fournit qu'une seule méthode append, qui est utilisée pour ajouter des paramètres de demande de formulaire à l'objet.
Dans les navigateurs grand public actuels, FormData peut être obtenu ou modifié des deux manières suivantes.
Méthode 1 : créez un objet FormData vide, puis utilisez la méthode append pour ajouter des paires clé-valeur une par une. Exemple :

var fd = new FormData();
fd.append("name", "脚本之家");
fd.append("blog", "http://jb51.net");
fd.append("file", document.getElementById("file"));
Copier après la connexion

Cette méthode ne nécessite pas l'existence d'objets de formulaire HTML.
Méthode 2 : Obtenez l'objet élément de formulaire et transmettez-le dans l'objet FormData en tant que paramètre. Exemple :

var formobj = document.getElementById("form");
var fd = new FormData(formobj);
Copier après la connexion

Bien sûr, vous pouvez également utiliser la méthode append pour continuer à ajouter d'autres paramètres à fd.

2. FormData envoie une requête

Maintenant que l'objet FormData est obtenu, comment envoyer une requête ? L'objet FormData est principalement utilisé dans la méthode d'envoi de l'objet XMLHttpRequest amélioré. Reportez-vous à l'exemple suivant :

var xhr = new XMLHttpRequest();    
xhr.open("POST" ,"http://jb51.net" , true);
xhr.send(fd);
xhr.onload = function(e) {
  if (this.status == 200) {
    alert(this.responseText);
  }
};
Copier après la connexion

3. Utilisation de FormData dans jquery

dans jQuery. ajax Dans la méthode, la méthode FormData peut également être utilisée pour réaliser un téléchargement sans actualisation. Mais faites attention aux réglages des paramètres, reportez-vous à ce qui suit :

$.ajax({
  url: "http://jb51.net",
  type: 'POST',
  data: fd,
  /**
   *必须false才会自动加上正确的Content-Type
   */
  contentType:false,
  /**
   * 必须false才会避开jQuery对 formdata 的默认处理
   * XMLHttpRequest会对 formdata 进行正确的处理
   */
  processData:false
}).done(function(result){
  console.log(result);
}).fail(function(err){
  console.log(err);
});
Copier après la connexion

4. ):

<?php
//php 接收表单提交信息并打印
if( isset( $_REQUEST[&#39;do&#39;]) ){
  var_dump($_REQUEST);
  var_dump($_FILES);
  die();
}

?>
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8">
    <title>FormData Test - jb51.net</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  </head>
  <body>
    <form id="form">
      <input type="file" name="file" id="file" />
      <input type="text" name="name" id="" value="脚本之家" />
      <input type="text" name="blog" id="" value="http://jb51.net" />
      <input type="submit" name="do" id="do" value="submit" />
    </form>
    <script>
    $("form").submit(function(e){
      e.preventDefault();
      
      //空对象然后添加
      var fd = new FormData();
      fd.append("name", "脚本之家");
      fd.append("blog", "http://jb51.net");
      fd.append("file", document.getElementById("file"));
      //fd.append("file", $(":file")[0].files[0]); //jQuery 方式
      fd.append("do", "submit");
      
      //通过表单对象创建 FormData
      var fd = new FormData(document.getElementById("form"));
      //var fd = new FormData($("form:eq(0)")[0]); //jquery 方式
      
      //XMLHttpRequest 原生方式发送请求
      var xhr = new XMLHttpRequest();    
      xhr.open("POST" ,"" , true);
      xhr.send(fd);
      xhr.onload = function(e) {
        if (this.status == 200) {
          alert(this.responseText);
        };
      };
      return;
      //jQuery 方式发送请求
      $.ajax({
        type:"post",
        //url:"",
        data: fd,
        processData: false,
        contentType: false
      }).done(function(res){
        console.log(res);
      });
      
      return false;
    });
    </script>
  </body>
</html>
Copier après la connexion

Ce qui précède est l'intégralité du contenu de cet article, j'espère que ce sera le cas. utile à l'étude de chacun. Plus Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

HTML5 utilise DOM pour le contrôle personnalisé

Code HTML5 et CSS3 pour implémenter l'affichage 3D des informations sur le produit

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal