Rumah hujung hadapan web tutorial js js实现form表单多文件上传的实例代码

js实现form表单多文件上传的实例代码

May 12, 2017 am 09:46 AM

这篇文章主要为大家详细介绍了JavaScript实现form表单的多文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

form表单的多文件上传,具体内容如下

formData对象可以使用一系列的键值对来模拟一个完整的表单,然后使用Ajax来发送这个表单

使用

表单初始化FormData对象的方式上传文件

<!--文件上传-->
 <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>
Salin selepas log masuk

注意:

1. 使用formData对象进行表单上传必须要为form添加enctype="multipart/form-data"属性
2. 使用formData对象进行表单上传必须要对其开始填入的值按照name属性放入该对象中,不能开始使用action上传,后面使用formData进行上传,这样会导致上传数据出现错误

获取change事件改变的文件

 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;);

 });
Salin selepas log masuk

删除按钮事件

$(&#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;);

 });
Salin selepas log masuk

文件上传事件

$("#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("请选择需要上传的文件!");
  }

 });
Salin selepas log masuk

【相关推荐】

1. 免费js在线视频教程

2. JavaScript中文参考手册

3. php.cn独孤九贱(3)-JavaScript视频教程

Atas ialah kandungan terperinci js实现form表单多文件上传的实例代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi pan peta Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi pan peta Nov 21, 2023 am 10:00 AM

Cara menggunakan JS dan Baidu Map untuk melaksanakan fungsi pan peta Baidu Map ialah platform perkhidmatan peta yang digunakan secara meluas, yang sering digunakan untuk memaparkan maklumat geografi, kedudukan dan fungsi lain dalam pembangunan web. Artikel ini akan memperkenalkan cara menggunakan API Peta JS dan Baidu untuk melaksanakan fungsi pan peta dan memberikan contoh kod khusus. 1. Persediaan Sebelum menggunakan API Peta Baidu, anda perlu memohon akaun pembangun pada Platform Terbuka Peta Baidu (http://lbsyun.baidu.com/) dan mencipta aplikasi. Penciptaan selesai

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Apr 03, 2024 am 11:55 AM

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

Alat penting untuk analisis saham: Ketahui langkah-langkah untuk melukis carta lilin dengan PHP dan JS Alat penting untuk analisis saham: Ketahui langkah-langkah untuk melukis carta lilin dengan PHP dan JS Dec 17, 2023 pm 06:55 PM

Alat penting untuk analisis saham: Pelajari langkah-langkah untuk melukis carta lilin dalam PHP dan JS, contoh kod khusus diperlukan Dengan perkembangan pesat Internet dan teknologi, perdagangan saham telah menjadi salah satu cara penting bagi banyak pelabur. Analisis saham adalah bahagian penting dalam membuat keputusan pelabur, dan carta lilin digunakan secara meluas dalam analisis teknikal. Mempelajari cara melukis carta lilin menggunakan PHP dan JS akan memberikan pelabur maklumat yang lebih intuitif untuk membantu mereka membuat keputusan yang lebih baik. Carta candlestick ialah carta teknikal yang memaparkan harga saham dalam bentuk candlestick. Ia menunjukkan harga saham

Cara membuat carta candlestick saham menggunakan PHP dan JS Cara membuat carta candlestick saham menggunakan PHP dan JS Dec 17, 2023 am 08:08 AM

Cara menggunakan PHP dan JS untuk mencipta carta lilin saham Carta lilin saham ialah grafik analisis teknikal biasa dalam pasaran saham Ia membantu pelabur memahami saham dengan lebih intuitif dengan melukis data seperti harga pembukaan, harga penutup, harga tertinggi. dan harga terendah turun naik harga saham. Artikel ini akan mengajar anda cara membuat carta lilin saham menggunakan PHP dan JS, dengan contoh kod khusus. 1. Persediaan Sebelum memulakan, kita perlu menyediakan persekitaran berikut: 1. Pelayan yang menjalankan PHP 2. Pelayar yang menyokong HTML5 dan Kanvas 3

Cara menggunakan JS dan Baidu Map untuk melaksanakan fungsi pemprosesan acara klik peta Cara menggunakan JS dan Baidu Map untuk melaksanakan fungsi pemprosesan acara klik peta Nov 21, 2023 am 11:11 AM

Gambaran keseluruhan tentang cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi pemprosesan acara klik peta: Dalam pembangunan web, selalunya perlu menggunakan fungsi peta untuk memaparkan lokasi geografi dan maklumat geografi. Pemprosesan acara klik pada peta ialah bahagian yang biasa digunakan dan penting dalam fungsi peta. Artikel ini akan memperkenalkan cara menggunakan API Peta JS dan Baidu untuk melaksanakan fungsi pemprosesan acara klik pada peta dan memberikan contoh kod khusus. Langkah: Import fail API Peta Baidu Pertama, import fail API Peta Baidu dalam fail HTML Ini boleh dicapai melalui kod berikut.

Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi peta haba peta Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi peta haba peta Nov 21, 2023 am 09:33 AM

Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi peta haba peta Pengenalan: Dengan perkembangan pesat Internet dan peranti mudah alih, peta telah menjadi senario aplikasi biasa. Sebagai kaedah paparan visual, peta haba boleh membantu kami memahami pengedaran data dengan lebih intuitif. Artikel ini akan memperkenalkan cara menggunakan API Peta JS dan Baidu untuk melaksanakan fungsi peta haba peta dan memberikan contoh kod khusus. Kerja penyediaan: Sebelum memulakan, anda perlu menyediakan item berikut: akaun pembangun Baidu, buat aplikasi dan dapatkan AP yang sepadan

Petua Pembangunan PHP dan JS: Kuasai Kaedah Melukis Carta Lilin Stok Petua Pembangunan PHP dan JS: Kuasai Kaedah Melukis Carta Lilin Stok Dec 18, 2023 pm 03:39 PM

Dengan perkembangan pesat kewangan Internet, pelaburan saham telah menjadi pilihan semakin ramai orang. Dalam perdagangan saham, carta lilin adalah kaedah analisis teknikal yang biasa digunakan Ia boleh menunjukkan trend perubahan harga saham dan membantu pelabur membuat keputusan yang lebih tepat. Artikel ini akan memperkenalkan kemahiran pembangunan PHP dan JS, membawa pembaca memahami cara melukis carta lilin saham dan menyediakan contoh kod khusus. 1. Memahami Carta Lilin Saham Sebelum memperkenalkan cara melukis carta lilin saham, kita perlu memahami dahulu apa itu carta lilin. Carta candlestick telah dibangunkan oleh orang Jepun

Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi lukisan poligon peta Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi lukisan poligon peta Nov 21, 2023 am 10:53 AM

Cara menggunakan Peta JS dan Baidu untuk melaksanakan fungsi lukisan poligon peta Dalam pembangunan web moden, aplikasi peta telah menjadi salah satu fungsi biasa. Melukis poligon pada peta boleh membantu kami menandakan kawasan tertentu untuk dilihat dan dianalisis oleh pengguna. Artikel ini akan memperkenalkan cara menggunakan API Peta JS dan Baidu untuk melaksanakan fungsi lukisan poligon peta dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan API Peta Baidu. Anda boleh menggunakan kod berikut untuk mengimport JavaScript API Peta Baidu dalam fail HTML

See all articles