亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery實現input[type=file]多圖預覽上傳刪除等功能

2019-11-19 11:05:09
字體:
來源:轉載
供稿:網友

下面我們了解一下,多圖上傳時,怎么實現預覽、上傳、刪除等功能。下圖是功能實現的預覽效果,雖然樣式有點丑,不過功能還是實現了。話不多說,直接看代碼會更直觀一些。

在這里插入圖片描述

首先定義一下基本格式,樣式代碼自行腦補:

<body> <div class="upload-header"> <input id="upload" type="file" accept="image/*" multiple="multiple"> <button class="btn">點擊上傳</button> </div> <div class="img-box"> <!-- 存放預覽圖片 --> </div></body>

接著定義看一下具體的js實現代碼,我是基于JQ做的開發,方便DOM的操作。

1. 預覽功能的實現

這里監聽input[type=file]的change事件,在回調函數中,取到暫存區的文件e.target.files,通過遍歷files 文件屬性,使用FileReader 函數讀取文件的值,然后使用append方法把圖片放入指定盒子中。備注::FileReader是一種異步文件讀取機制,結合input:file可以很方便的讀取本地文件。

imgPreview: function () { var that = this; $('.upload-header').on('change', '#upload', function(e) {  var files = e.target.files;  if (files.length > 0) {  for (var i = 0; i < files.length; i++) {   var reader = new FileReader();   reader.onload = function () {   var text = `    <div class="img-list">    <img src="${this.result}" alt="">    <div class="del-img">刪除</div>    </div>   `   $('.img-box').append(text);   };   reader.readAsDataURL(files[i]);   that.filesList.push(files[i]);  };  }; }) }

2. 圖片刪除功能

這里是使用on方法對預覽的圖片添加點擊事件,這里使用on方法主要是因為on方法對后面添加的dom可以繼續監聽。當需要刪除照片時,直接刪除其圖片的父節點及以下節點就可以了。此時記得把暫存區的文件filesList也要對應刪除。

delImage: function () { var that = this; $('.img-box').on('click', '.del-img', function () {  var delStatus = confirm('確認這張圖片刪除嗎?');  if (delStatus) {  var index = $(this).parent().index();  $(this).parent().remove();  that.filesList.splice(index, 1);  console.log('我刪除啦', index);  }; }); }

2. 圖片批量上傳功能

圖片上傳我定義了兩個方法,第一方法是點擊上傳后,對所有文件進行遍歷,依次調取上傳的方法(因為用的七牛上傳工具,只支持單個文件上傳,所以采取了遍歷的方式)。第二個方法使用了jq的ajax的post上傳方式,使用FormData實例,添加file屬性進行上傳。因為是批量上傳,所以我使用了定義臨時變量flag 的方式來判斷文件是否都上傳完成,當flag的值與filesList的數量一致時,就可以判斷所有上傳完成。使用方法比較low,如果其他好的方法可以留言交流。

clickUpload: function () { var that = this; var filesList = this.filesList; $('.btn').on('click', function() { that.flag = 0; if (filesList.length > 0) {  for (var i = 0; i < filesList.length; i++) {  that.upLoadMethod(filesList[i]);  } }; }) },upLoadMethod: function (file) { var that = this; var formData = new FormData(); formData.append('file', file); $.ajax({  type: "post",  url: 'http://172.16.1.99:8703/file/upload',  data: formData,  mimeType: "multipart/form-data",  dataType: "json",  async: false,  cache: false, //上傳文件不需要緩存  contentType: false, //需設置為false。因為是FormData對象,且已經聲明了屬性enctype="multipart/form-data"  processData: false, //需設置為false。因為data值是FormData對象,不需要對數據做處理  success: function (response) {  that.flag += 1;  if (that.flag === that.filesList.length) {   console.log('我上傳完成了');  };  },  error: function (err) {  console.log('上傳失敗');  } }); },

以下是完整的js代碼,供參考:

<script> function UploadFunction (name) { this.name = name; this.init(); }; UploadFunction.prototype = { // 初始化 init: function () {  this.clickUpload();  this.imgPreview();  this.delImage(); }, flag: 0, filesList: [], // 點擊上傳 clickUpload: function () {  var that = this;  var filesList = this.filesList;  $('.btn').on('click', function() {  that.flag = 0;  if (filesList.length > 0) {   for (var i = 0; i < filesList.length; i++) {   that.upLoadMethod(filesList[i]);   }  };  })  }, imgPreview: function () {  var that = this;  $('.upload-header').on('change', '#upload', function(e) {  var files = e.target.files;  console.log(files);  if (files.length > 0) {   for (var i = 0; i < files.length; i++) {   var reader = new FileReader();   reader.onload = function () {    var text = `    <div class="img-list">     <img src="${this.result}" alt="">     <div class="del-img">刪除</div>    </div>    `    $('.img-box').append(text);   };   reader.readAsDataURL(files[i]);   that.filesList.push(files[i]);   };  };  }) }, upLoadMethod: function (file) {  var that = this;  var formData = new FormData();  formData.append('file', file);  $.ajax({  type: "post",  url: '這里使用上傳的地址/upload',  data: formData,  mimeType: "multipart/form-data",  dataType: "json",  async: false,  cache: false, //上傳文件不需要緩存  contentType: false, //需設置為false。因為是FormData對象,且已經聲明了屬性enctype="multipart/form-data"  processData: false, //需設置為false。因為data值是FormData對象,不需要對數據做處理  success: function (response) {   that.flag += 1;   if (that.flag === that.filesList.length) {   console.log('我上傳完成了');   };  },  error: function (err) {   console.log('上傳失敗');  }  }); }, delImage: function () {  var that = this;  $('.img-box').on('click', '.del-img', function () {  var delStatus = confirm('確認這張圖片刪除嗎?');  if (delStatus) {   var index = $(this).parent().index();   $(this).parent().remove();   that.filesList.splice(index, 1);   console.log('我刪除啦', index);  };  }); } } var UploadFunction = new UploadFunction('小明刪照片');

總結

以上所述是小編給大家介紹的jQuery實現input[type=file]多圖預覽上傳刪除等功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日本欧美一区二区三区在线| 日韩激情第一页| 欧美老女人性生活| 国产狼人综合免费视频| 国外成人在线视频| 亚洲自拍偷拍色图| 日韩精品在线观看网站| 欧美性感美女h网站在线观看免费| 亚洲第一综合天堂另类专| 国产精品久久久久一区二区| 久久久爽爽爽美女图片| 欧美亚州一区二区三区| 国产精品第一页在线| 欧美在线中文字幕| 日韩av手机在线看| 欧美一区深夜视频| 国产视频精品一区二区三区| 97色在线播放视频| 亚洲高清久久网| 国产成人精品一区二区在线| 黄色成人av网| 日韩风俗一区 二区| 日韩免费视频在线观看| 日韩毛片在线观看| 国产亚洲精品成人av久久ww| 日韩av在线影院| 日韩高清人体午夜| 国产精品久久精品| 色婷婷综合成人| 欧美猛交免费看| 久久影视三级福利片| 成人免费网视频| 96精品视频在线| 精品国内产的精品视频在线观看| 亚洲人成电影网站色xx| 91久久久久久久| 国产精品日韩在线播放| 成人淫片在线看| 国产欧美欧洲在线观看| 久久精品最新地址| 最近2019中文字幕在线高清| 亚洲午夜未满十八勿入免费观看全集| 久久久欧美一区二区| 欧美一乱一性一交一视频| 欧美大片在线看免费观看| 日韩免费在线视频| 久久艹在线视频| 精品久久国产精品| 91av在线免费观看视频| 日韩精品极品视频免费观看| 色综合天天综合网国产成人网| 久久天天躁狠狠躁夜夜躁| 亚洲福利视频网| 亚洲成人av在线播放| 欧美另类老肥妇| 欧美高清在线播放| 久久色在线播放| 在线观看国产欧美| 亚洲欧美国产高清va在线播| 欧美亚洲视频在线观看| 亚洲精品国偷自产在线99热| 国产精品视频久久久| 久久夜色精品国产亚洲aⅴ| 亚洲国产欧美一区二区三区久久| 亚洲一区二区三区香蕉| 国产91九色视频| 久久综合色88| 国产欧美亚洲精品| 国外成人免费在线播放| 亚洲女人天堂色在线7777| 欧美激情视频在线| 国产成人精品视| 日韩综合中文字幕| 国产日韩在线播放| 国产91对白在线播放| 日韩在线播放av| 亚洲在线视频观看| 亚洲高清福利视频| 91成人在线观看国产| 久久免费视频网| 久久这里有精品| 青草青草久热精品视频在线网站| 国产成人精品国内自产拍免费看| 在线视频一区二区| 欧美精品电影在线| 91精品久久久久久久久| 亚洲第一区第一页| 人九九综合九九宗合| 麻豆国产va免费精品高清在线| 国产日韩亚洲欧美| 亚洲国产精久久久久久久| 国产欧美久久一区二区| 国产亚洲欧洲高清一区| 日韩一区视频在线| 久久久久久久久国产精品| 免费91麻豆精品国产自产在线观看| 国产精品一区二区三区在线播放| 精品视频—区二区三区免费| 在线播放日韩欧美| 久久久精品久久| 精品一区二区电影| 国产精品你懂得| 精品偷拍一区二区三区在线看| 日韩欧美极品在线观看| 国产做受高潮69| 日韩成人高清在线| 亚洲天堂第一页| 亚洲第一级黄色片| 日韩精品中文字幕久久臀| 美女性感视频久久久| 在线成人激情黄色| 在线亚洲午夜片av大片| 日韩av免费看| 欧美日韩爱爱视频| 97热精品视频官网| 国产精品亚洲美女av网站| 欧美日韩国产成人高清视频| 久久在线视频在线| 精品毛片网大全| 欧美成人亚洲成人| 久久久女女女女999久久| 色综合久久天天综线观看| 久久综合久久美利坚合众国| 97在线免费观看视频| 国产日本欧美视频| 国产精品一区二区三区在线播放| 超碰精品一区二区三区乱码| 精品成人国产在线观看男人呻吟| 日本精品一区二区三区在线播放视频| 亚洲成年人在线播放| 奇米一区二区三区四区久久| 亚洲女人天堂av| 久久成人人人人精品欧| 日韩中文有码在线视频| 欧美国产日韩视频| 日韩欧美一区二区三区| 2019中文字幕在线观看| 成人美女av在线直播| 亚洲国产精品yw在线观看| 精品久久久久久久久久久| 成人免费网视频| 77777亚洲午夜久久多人| 精品人伦一区二区三区蜜桃免费| 在线精品91av| 777国产偷窥盗摄精品视频| 亚洲视频在线看| 久热精品在线视频| 日韩人体视频一二区| 欧美国产乱视频| 青青草99啪国产免费| 国产亚洲人成a一在线v站| 国产精品免费看久久久香蕉| 亚洲黄一区二区| 国产亚洲人成a一在线v站| 国产精品夜色7777狼人| 国产视频欧美视频| 欧美日韩国产麻豆| xxx一区二区| 国产精品久久久久久久久粉嫩av| 国产精品一区二区三区免费视频| 欧美激情综合色综合啪啪五月| 欧美日韩国产va另类| 欧美激情一区二区三级高清视频| 国产91色在线|