溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript實現form表單的多文件上傳的方法

發布時間:2021-04-12 09:39:36 來源:億速云 閱讀:316 作者:小新 欄目:web開發

這篇文章給大家分享的是有關JavaScript實現form表單的多文件上傳的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

form表單的多文件上傳,具體內容如下

formData對象可以使用一系列的鍵值對來模擬一個完整的表單,然后使用Ajax來發送這個表單

使用<form>表單初始化FormData對象的方式上傳文件

<!--文件上傳-->
 <form id="uploadForm" enctype="multipart/form-data">
 <div class="row" >
 <div class="form-group col-md-12" id="file">  
  <input type="hidden" name="_csrf-application"
   value="<?= $csrf ?>">
  <div class="form-group field-uploadform-excelfiles" >
  <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" >
  <div class="help-block"></div>
  <div id="fileName"></div>
  </div>

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

注意:

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('change', 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);
  $('#files').append( '<tr >' +
     '<td>'+fileName+'</td>' +
     '<td>'+(item.size / 1024).toFixed(2)+'K</td>' +
     '<td><input type="button" class="btn btn-danger delete" value="刪除"></td>' +
     '</tr>');
  //追加文件
  formData.append('UploadForm[excelFiles][]',item);
  } else {
  fileError++;
  }
 });
 if (fileError > 0) {
  alert("只能上傳 “.xlsx” 格式的文件!");
  document.getElementById("upload-form").reset();
  return;
 }

 var fileCount = $('#files').find('tr').length;
 $('#fileName').html('共上傳 ' + fileCount + ' 個文件');

 });

刪除按鈕事件

$('#files').on('click','.delete',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('UploadForm[excelFiles][]');
 //將不刪除的數組追加的formData中
 $.each(saveFile,function (index, item) {
  formData.append('UploadForm[excelFiles][]',item);
 });

 e.target.parentNode.parentNode.remove();
 var fileCount = $('#files').find('tr').length;
 $('#fileName').html('共上傳 ' + fileCount + ' 個文件');

 });

文件上傳事件

$("#fileUpload").on('click',function () {
 var len = formData.getAll('UploadForm[excelFiles][]').length;
 $("#overlay").show();
 if(len > 1){
  var deleteBtn = $(".delete");
  //通過ajax進行上傳
  $.ajax({
   url: '/finalize/upload',
   type: 'POST',
   cache: false,
   data: formData,
   processData: false,
   contentType: false
  }).done(function(res) {
   if(res.code == 'ok'){
   //進度條設置
   var value = 0;
   var timer2 = setInterval(function () {
    value ++;
    $("#progress").css('width', value + "%");
    if (value == 120) {
    clearInterval(timer2);
    $("#overlay").hide();
    alert("文件上傳成功!");
    }
   }, 50);
   //刪除對應按鈕
   $("#fileUpload").css("display","none");
   $.each(deleteBtn,function (index, item) {
   $(item).css("display","none");
   });
   $('#files').append('<tr><td><td><td><a type="button" class="btn btn-success pull-right" id="fileDown" href="/finalize/get-file?id=' + res.data.id + '" >文件下載</a></td></tr>')
  }

  }).fail(function(res) {
  alert("文件上傳失敗:" + res.msg);
  });
 }else {
  alert("請選擇需要上傳的文件!");
 }

 });

感謝各位的閱讀!關于“JavaScript實現form表單的多文件上傳的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女