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

首頁 > 編程 > JavaScript > 正文

基于jquery ajax的多文件上傳進度條過程解析

2019-11-19 10:49:47
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了基于jquery ajax的多文件上傳進度條過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

效果圖

前端代碼,基于jquery

<!DOCTYPE html><html> <head>  <title>主頁</title>  <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  <style type="text/css">      *{        padding: 0;        margin: 0;      }      table{        width: 600px;        text-align: center;      }  </style> </head> <body>     <input type="file" id="imgsend" name="file" value="發送圖片" multiple="multiple" />      <table border="1" cellspacing="0" cellpadding="0">        <thead>          <tr>            <td>名稱</td>            <td>大小</td>            <td>進度</td>            <td>結果</td>          </tr>        </thead>        <tbody>          <!-- <tr>              <td>xxx</td>              <td>100</td>              <td class="per">100%</td>              <td class="result">成功</td>           </tr>-->        </tbody>      </table> </body> <script type="text/javascript" src="/javascripts/jquery.js"> </script>   <script type="text/javascript">    ;(function($){   $.fn.extend({        uploadFile:function(option){          var that = this;          var defau = {            type:"post",            cache:false,            url:"",            data:{},            processData:false,            contentType:false,            success:function(){},            error:function(){},            progress:function(){},            sendBefore:function(){},            filter:[], //可以接受的文件后綴            upName:true //是否對文件名稱轉化大寫比對                       }          option = $.extend(true, defau, option);                    var  fileP = that.attr("name") || "file"; //傳給后端得 file對應字段          console.log(fileP)          var files = that[0].files;                     option.sendBefore(files); //發送之前                     for(var i = 0,len = files.length; i < len; i++ ){             var fs = files[i];             var fnameArr = fs.name.split('.');             var fNmae = fnameArr.pop();             var str = '';             if(option.upName){                fNmae = fNmae.toUpperCase();             }else{                fNmae = fNmae.toLowerCase();             }             if(option.filter.length > 0 && option.filter.indexOf(fNmae) !== -1){                option.error("文件后綴不符",i);                  continue;             }             fileUpload(files[i],i);                       }                     //開始文件上傳          function fileUpload(file,index){             var fd = new FormData();             fd.append(fileP,file);                          //追加其他參數             for(var i in option.data){                fd.append(i,option.data[i]);             }                          $.ajax({              url: option.url,              type: option.type,             data: fd,             cache: option.cache,             processData: option.processData,             contentType: option.contentType,              success:function(data){                option.success(data,index);                               },              error:function(error){                console.log(error);                option.error(error,index);              },              xhr: function(){                var xhr = $.ajaxSettings.xhr();                if(onprogress && xhr.upload) {                 xhr.upload.addEventListener("progress" , onprogress, false);                 return xhr;                }            }             });                         function onprogress(evt){              var loaded = evt.loaded;   //已經上傳大小情況             var tot = evt.total;   //附件總大小             var per = Math.floor(100*loaded/tot); //已經上傳的百分比              file.loaded = loaded;              file.total = tot;              file.percent = per + '%';              file.index = index;              option.progress(file);            }          }          return that;        }   });    })($,window);   //發送圖片     var $table = $("table tbody");     $("#imgsend").on('change',function(){    var that = this;          $(that).uploadFile({      url:"/api/file",      data:{},      filter:[], //后綴文件篩選      sendBefore:function(files){         //開始之前         console.log(files);         var str = '';         for(var i = 0; i < files.length; i++){          var item = files[i];          str += '<tr>'+                '<td>'+ item.name +'</td>'+                '<td>'+ FormatSize (item.size) +'</td>'+                '<td class="per">0</td>'+                '<td class="result"></td>'+              '</tr>';         }                   $table.html(str);                },      success:function(data,index){         //某個文件傳完        var $tr = $table.find('tr').eq(index);        $tr.find('.result').html("成功");      },      error:function(err,index){        //某個文件報錯        $tr.find('.result').html("失敗");      },      progress:function(file){        //某個文件的上傳進度                 // file.loaded 已經上傳的        // flie.total 總量        // file.percent 百分比        // file.index  第多少個文件        var $tr = $table.find('tr').eq(file.index);        $tr.find('.per').html(file.percent);        console.log(file.name + ":第" + file.index + '個:' + file.percent);      }      });  });        //文件大小格式化function FormatSize (fileSize) {   var arrUnit = ["B", "K", "M", "G", "T", "P"],     baseStep = 1024,     unitCount = arrUnit.length,     unitIndex = 0;            while(fileSize >= baseStep && unitIndex < unitCount - 1){     unitIndex++;     fileSize /= baseStep;   }   fileSize = fileSize.toFixed(2);   return fileSize + " " + arrUnit[unitIndex]; }  </script></html>

后端代碼,nodejs+express

const multiparty = require('multiparty');  var fs =require("fs"); router.post('/api/file', function(req, res, next) {  //生成multiparty對象,并配置上傳目標路徑  const form = new multiparty.Form()  // //設置編輯  form.encoding = 'utf-8'  // //設置文件存儲路徑  form.uploadDir = "./public/static/files/"  // //設置單文件大小限制  //form.maxFilesSize = 2 * 1024 * 1024  // form.maxFields = 1000; 設置所以文件的大小總和  // 上傳完成后處理  form.parse(req, (err, fields, files) => {   if (err) {    console.log("parse:",err);    res.json({"success":"error"});   } else {    const inputFile = files.file[0];    const uploadedPath = inputFile.path    const imgtype = inputFile.originalFilename;    const inPath = `./public/static/files/${imgtype}`; //重命名的路徑    // 判斷是否存在./dist/static/files文件    fs.stat('./public/static/files', (err, stats) => {     if (JSON.stringify(stats) === undefined) {      fs.mkdirSync('./public/static', 0777)      fs.mkdirSync('./public/static/files', 0777)     }     storeFiles(uploadedPath, fields, inPath)    });   }  });     function storeFiles(uploadedPath, fields, inPath) {   //重命名為真實文件名   fs.rename(uploadedPath, inPath, (err) => {    if (err) {      console.log("rename:",err);      res.json({"success":"error"});    } else {          res.json({"success":"hahha"});    }   });  }});

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产专区欧美专区| 亚洲欧洲一区二区三区在线观看| 欧美性开放视频| 精品国偷自产在线视频99| 国产在线拍偷自揄拍精品| 亚洲男人的天堂在线| 福利二区91精品bt7086| 尤物yw午夜国产精品视频| 亚洲高清免费观看高清完整版| 97香蕉超级碰碰久久免费软件| 91最新在线免费观看| 亚洲欧美综合精品久久成人| 国产一区av在线| 久久深夜福利免费观看| 国产日韩精品在线播放| 中文字幕亚洲欧美一区二区三区| 久久久视频精品| xxx成人少妇69| 国产在线精品成人一区二区三区| 日本欧美爱爱爱| 亚洲成年网站在线观看| 国产精品一香蕉国产线看观看| 正在播放欧美视频| 亚洲欧美日韩在线高清直播| 欧美综合激情网| 黄色一区二区在线观看| 精品国产欧美一区二区三区成人| 国产精品成人一区| 77777少妇光屁股久久一区| 欧美日韩亚洲高清| 自拍偷拍亚洲一区| 欧美日韩国产二区| 欧美高清视频免费观看| 综合国产在线观看| 91网在线免费观看| 色综合视频一区中文字幕| 亚洲成人黄色在线| 欧美富婆性猛交| 亚洲成av人影院在线观看| 国产精品久久久久久久久久久新郎| 日韩精品视频在线观看免费| 欧美性视频在线| 欧美天天综合色影久久精品| 亚洲欧美国产精品久久久久久久| 亚洲一区二区在线播放| 久久全国免费视频| 这里只有精品在线播放| 国产精品免费一区豆花| 91av视频在线免费观看| 欧美一级高清免费播放| 国产精品∨欧美精品v日韩精品| 久久精视频免费在线久久完整在线看| 日本一欧美一欧美一亚洲视频| 国产精品27p| 欧美电影电视剧在线观看| 亚洲精品www久久久久久广东| 久久久91精品| 精品伊人久久97| 97久久精品国产| 亚洲精品视频网上网址在线观看| 亚洲国产欧美一区| 91av视频在线观看| 欧美日韩国产精品一区二区三区四区| 国产精品第一区| 一道本无吗dⅴd在线播放一区| 欧美最猛性xxxxx(亚洲精品)| 怡红院精品视频| 欧美在线视频在线播放完整版免费观看| 亚洲国产成人精品一区二区| 韩国欧美亚洲国产| 成人免费午夜电影| 日韩天堂在线视频| 成人黄色影片在线| 精品久久久国产| 国产欧美中文字幕| 国产精品久久久久久久久男| 日韩日本欧美亚洲| 亚洲天堂日韩电影| 欧美精品一区三区| 国产精品日韩欧美综合| 日韩在线视频观看正片免费网站| 欧美成人午夜激情视频| 国产精品国模在线| 欧美亚洲在线观看| 欧美国产日韩中文字幕在线| 成人国产在线视频| 久久99热这里只有精品国产| 国产剧情久久久久久| 欧美成人午夜激情| 一本一本久久a久久精品牛牛影视| 一区二区福利视频| 国产中文日韩欧美| 日韩免费在线播放| 91在线精品播放| 人人做人人澡人人爽欧美| 久久久精品国产亚洲| 欧美国产第一页| 这里精品视频免费| 亚洲精品电影在线观看| 亚洲人成电影网站色www| 在线播放日韩av| 国内精品小视频在线观看| 日本一区二区三区四区视频| 日韩影视在线观看| 国产精品国产自产拍高清av水多| 日本伊人精品一区二区三区介绍| 国产精品视频最多的网站| 一本一本久久a久久精品牛牛影视| 日韩成人av网址| 国产精品久久久久久久久久尿| 亚洲欧美色婷婷| 欧美wwwxxxx| 亚洲午夜av久久乱码| 久久久国产精彩视频美女艺术照福利| 国产精品日韩久久久久| 国产成人精品综合久久久| 亚洲国产精品悠悠久久琪琪| 国产精品99蜜臀久久不卡二区| 97视频在线观看免费高清完整版在线观看| 最新69国产成人精品视频免费| 欧美日韩亚洲成人| 久久青草精品视频免费观看| 亚洲欧美中文日韩在线v日本| 日韩成人在线播放| 国产成人久久久精品一区| 视频一区视频二区国产精品| 国产精品a久久久久久| 国产精品午夜一区二区欲梦| 精品一区电影国产| 欧美性做爰毛片| 欧美日韩在线视频一区| 国产日韩欧美影视| 久久成人在线视频| 久久成人av网站| 成人免费视频网址| 在线亚洲午夜片av大片| 亚洲色图激情小说| 国产精品久久久久999| 国产精品国产亚洲伊人久久| 日韩美女免费视频| 色偷偷噜噜噜亚洲男人的天堂| 亚洲女同精品视频| 亚洲国产精彩中文乱码av| 精品国产拍在线观看| 国产在线观看一区二区三区| 啪一啪鲁一鲁2019在线视频| 欧美巨大黑人极品精男| 亚洲成人激情图| 亚洲色图校园春色| 欧美高清电影在线看| 欧美精品做受xxx性少妇| 成人97在线观看视频| 亚洲午夜av久久乱码| 久久久999精品视频| 欧美性猛交丰臀xxxxx网站| 国产精品久久久久久中文字| 日韩有码视频在线| 国产精品亚洲视频在线观看| 国产成人精品电影久久久| 91高潮在线观看| 国产精品日本精品| 国产精品成人av性教育| 主播福利视频一区| 精品视频在线观看日韩|