Maison >interface Web >js tutoriel >Exemple de code pour implémenter plusieurs téléchargements de fichiers sous forme à l'aide de js

Exemple de code pour implémenter plusieurs téléchargements de fichiers sous forme à l'aide de js

零下一度
零下一度original
2017-05-12 09:46:521938parcourir

Cet article présente principalement en détail JavaScript comment implémenter plusieurs téléchargements de fichiers de formulaires. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

. Téléchargement de fichiers multiples du formulaire, le contenu spécifique est le suivant

L'objet formData peut utiliser une série de paires clé-valeur pour simuler un formulaire complet, puis utiliser Ajax pour envoyer le

Utilisez le formulaire ff9c23ada1bcecdd1a0fb5d5a0f18437 pour initialiser l'objet FormData afin de télécharger des fichiers

<!--文件上传-->
 <form id="uploadForm" enctype="multipart/form-data">
 <p class="row" style="margin-top: 20px;">
  <p class="form-group col-md-12" id="file">   
   <input type="hidden" name="_csrf-application"
     value="<?= $csrf ?>">
   <p class="form-group field-uploadform-excelfiles" style="margin-left: 30px;">
    <label class="control-label btn btn-primary"
      for="uploadform-excelfiles">选择文件</label>
    <input type="file" id="uploadform-excelfiles" name="UploadForm[excelFiles][]"
      multiple class="attachment-upload" accept=".xlsx">
    <input type="button" id="fileUpload" value="上传文件" class="btn btn-success" style="margin-left: 15px;">
    <p class="help-block"></p>
    <p id="fileName"></p>
   </p>

  </p>
 </p>
 <table role="presentation" class="table"><tbody id="files"></tbody></table> 
</form>

Remarque :

1. Lorsque vous utilisez l'objet formData pour télécharger le formulaire, vous devez ajouter l'attribut enctype="multipart/form-data" au form
2. téléchargez le formulaire, vous devez commencer à remplir la valeur. Mettez-la dans l'objet en fonction de l'attribut name. Vous ne pouvez pas commencer à utiliser l'action pour télécharger plus tard. Cela entraînera des erreurs dans les données téléchargées

.

Obtenir le fichier modifié par l'événement de changement

 var fileList;
 var allFile = [];
 //FormData对象初始化
 var form = document.getElementById("upload-form");
 var formData = new FormData(form);
 $("#uploadform-excelfiles").on(&#39;change&#39;, function (e) {
  //获取表单数据并传入formData中
  var norm = $("#norm").val();
  var major = $("#major").val();
  var type = $("#type").val();
  formData.set("norm",norm);
  formData.set("major",major);
  formData.set("type",type);

  var fileError = 0;
  fileList = e.currentTarget.files;
  $.each(fileList, function (index, item) {
   var fileName = item.name;
   var fileEnd = fileName.substring(fileName.indexOf("."));
   //上传文件格式判断
   if (fileEnd == ".xlsx") {
    allFile.push(item);
    $(&#39;#files&#39;).append( &#39;<tr style="padding-top: 7px;">&#39; +
         &#39;<td>&#39;+fileName+&#39;</td>&#39; +
         &#39;<td>&#39;+(item.size / 1024).toFixed(2)+&#39;K</td>&#39; +
         &#39;<td><input type="button" class="btn btn-danger delete" value="删除"></td>&#39; +
         &#39;</tr>&#39;);
    //追加文件
    formData.append(&#39;UploadForm[excelFiles][]&#39;,item);
   } else {
    fileError++;
   }
  });
  if (fileError > 0) {
   alert("只能上传 “.xlsx” 格式的文件!");
   document.getElementById("upload-form").reset();
   return;
  }

  var fileCount = $(&#39;#files&#39;).find(&#39;tr&#39;).length;
  $(&#39;#fileName&#39;).html(&#39;共上传 &#39; + fileCount + &#39; 个文件&#39;);

 });

SupprimerBoutonÉvénement

$(&#39;#files&#39;).on(&#39;click&#39;,&#39;.delete&#39;,function (e) {
  var saveFile = [];
  var norm = $("#norm").val();
  var major = $("#major").val();
  var type = $("#type").val();
  var deleteName = e.target.parentNode.previousElementSibling.previousElementSibling.textContent;
  var deleteIndex;
  //将不删除的放入数组中
  $.each(allFile,function (index, item) {
   if(item.name == deleteName){
     deleteIndex = index;
   }else {
    saveFile.push(item);
   }
  });
  allFile.splice(deleteIndex,1);
  //表单数据重置
  formData.set("norm",norm);
  formData.set("major",major);
  formData.set("type",type);
  formData.delete(&#39;UploadForm[excelFiles][]&#39;);
  //将不删除的数组追加的formData中
  $.each(saveFile,function (index, item) {
   formData.append(&#39;UploadForm[excelFiles][]&#39;,item);
  });

  e.target.parentNode.parentNode.remove();
  var fileCount = $(&#39;#files&#39;).find(&#39;tr&#39;).length;
  $(&#39;#fileName&#39;).html(&#39;共上传 &#39; + fileCount + &#39; 个文件&#39;);

 });

Événement de téléchargement de fichiers

$("#fileUpload").on(&#39;click&#39;,function () {
  var len = formData.getAll(&#39;UploadForm[excelFiles][]&#39;).length;
  $("#overlay").show();
  if(len > 1){
    var deleteBtn = $(".delete");
    //通过ajax进行上传
    $.ajax({
     url: &#39;/finalize/upload&#39;,
     type: &#39;POST&#39;,
     cache: false,
     data: formData,
     processData: false,
     contentType: false
    }).done(function(res) {
     if(res.code == &#39;ok&#39;){
      //进度条设置
      var value = 0;
      var timer2 = setInterval(function () {
       value ++;
       $("#progress").css(&#39;width&#39;, value + "%");
       if (value == 120) {
        clearInterval(timer2);
        $("#overlay").hide();
        alert("文件上传成功!");
       }
      }, 50);
     //删除对应按钮
     $("#fileUpload").css("display","none");
     $.each(deleteBtn,function (index, item) {
      $(item).css("display","none");
     });
     $(&#39;#files&#39;).append(&#39;<tr><td><td><td><a type="button" class="btn btn-success pull-right" id="fileDown" href="/finalize/get-file?id=&#39; + res.data.id + &#39;" rel="external nofollow" >文件下载</a></td></tr>&#39;)
    }

   }).fail(function(res) {
    alert("文件上传失败:" + res.msg);
   });
  }else {
   alert("请选择需要上传的文件!");
  }

 });

[Recommandations associées]

1. >Tutoriel vidéo en ligne js gratuit

2.

Manuel de référence JavaScript chinois

3

php.cn Dugu Jiujian (3) - Tutoriel vidéo JavaScript.

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!

Déclaration:
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