国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Jquery結合HTML5實現文件上傳

2019-11-20 12:09:06
字體:
來源:轉載
供稿:網友

1.利用Jquery使用HTML5的FormData屬性實現對文件的上傳

  在HTML5以前我們如果需要實現文件上傳服務器等功能的時候,有時候我們不得不依賴于FLASH去實現,而在HTML5到來之后,我們很容易的實現對文件的上傳,只需要利用HTML5的一個FormData屬性,結合Jquery就很容易實現文件的上傳,而且讀取文件的上傳進度,下面這個上傳案例就是基于上面所說的實現的,下面我將所所有的JS和CSS以及HTML頁面代碼放在下面。

  注意事項:FormData屬性必須依賴于HTML5,所以如果你按照本文代碼實現的功能,則瀏覽器必須升級為最新(支持HTML5 FormData屬性)。

2.HTML頁面代碼如下

 <!DOCTYPE html>  <html lang="en" xmlns="http://www.w3.org/1999/xhtml">   <head>     <meta charset="utf-8" />     <title>使用HTML的FormData屬性實現文件上傳</title>     <link rel="stylesheet" href="../css/fileUpload.css" />   </head>   <body>     <table id="uploadTable" style="border: 1px;"></table>     <br/>     <a href="javascript:void(0);" class="input-file">       添加文件<input type="file" id="txtFile" style="width:200px;" />     </a>     <script type="text/javascript" src="../js/jquery-1.7.1-min.js"></script>      <script type="text/javascript">       $(function () {         $('#uploadTable').SalesMOUNDUpload({           saveUrl: '/Test/Save',           jqInput: $('#txtFile'),           fnRemove: removeFile,           fnComplete: function (d) {             window.console.log('complete ' + d);           }         });       });       function removeFile(d) {         $.post('/Test/Remove', { "filename": d }, function(r) {                    });       }     </script>   </body> </html>

3.CSS代碼如下:

 /*源文件頭信息: <copyright file="FileUpload.js"> Copyright(c)2014-2034 Kencery.All rights reserved. 個人博客:http://www.cnblogs.com/hanyinglong 創建人:韓迎龍(kencery) 創建時間:2015-6-24 </copyright>*/  body {   font-family: "微軟雅黑";   font-size: 12px; } .input-file {   overflow: hidden;   position: relative; } .input-file input {   opacity: 0;   filter: alpha(opacity=0);   font-size: 100px;   position: absolute;   top: 0;   right: 0; } #uploadTable {   width: 500px;   border-collapse: collapse;   border: 1px solid Silver; }

4.JS代碼如下:

// 源文件頭信息:// <copyright file="FileUpload.js">// Copyright(c)2014-2034 Kencery.All rights reserved.// 創建人:韓迎龍(kencery)// 創建時間:2015-6-24// </copyright>;(function($) {  $.fn.SalesMOUNDUpload = function(options) {    var defaults =    {      saveUrl: '',      jqInput: '',      maxSize: 1024 * 1024 * 100, //100M      fnRemove: '', //移除文件 ,參數:文件名      fnComplete: '' //每個文件成功 ,參數:服務器端返回內容    };    var opt = $.extend(defaults, options);    function getByteToM(val) {      if (isNaN(val)) return val;      val = val / (1024 * 1024);      val = Math.round(val * 100) / 100;      return val;    }    return this.each(function() {      var $this = $(this);      $this.empty();      if (typeof FormData == 'undefine') {        alert('瀏覽器版本太低,不支持改上傳!');        return;      }      //表頭      if ($this.find('thead').length == 0) {        var $thead = $('<thead>');        var $th_tr = $('<tr>');        $th_tr.append('<th>文件名</th>');        $th_tr.append('<th>類型</th>');        $th_tr.append('<th>大小</th>');        $th_tr.append('<th>狀態</th>');        $th_tr.append('<th>操作</th>');        $th_tr.appendTo($thead);        $this.append($thead);      }      opt.jqInput[0].addEventListener('change', function(e) {        var file = this.files[0];        if (!file) {          return;        }        if (file.size > opt.maxSize) {          window.alert('文件超過最大');          return;        }        var fd = new FormData();        var $table = $this;        fd.append("uploadFile", file);        var xhr = new XMLHttpRequest();        xhr.open('POST', opt.saveUrl, true);        xhr.upload.addEventListener("progress", uploadProgress, false);        xhr.addEventListener("load", uploadComplete, false);        xhr.addEventListener("error", uploadFailed, false);        xhr.addEventListener("abort", uploadCanceled, false);        //表中內容        var $tr = $('<tr>');        $tr.append('<td class="upload_name">' + file.name + '</td>');        $tr.append('<td class="upload_type">' + file.type + '</td>');        $tr.append('<td class="upload_size">' + getByteToM(file.size) + 'M' + '</td>');        $tr.append('<td class="upload_status">' + 0 + '</td>');        $tr.append('<td class="upload_action"><a href="javascript:void(0);">' + '取消' + '</a></td>');        $tr.find('.upload_action a').unbind('click').bind('click', function() {          xhr.abort();        });        $table.append($tr);        function uploadProgress(evt) {          if (evt.lengthComputable) {            var percentComplete = Math.round(evt.loaded * 100 / evt.total);            $tr.find('.upload_status').html(Math.round(percentComplete) + '%');          } else {            $tr.find('.upload_status').html('unable to compute');          }        }        function uploadComplete(evt) {          if (evt.target.status == 200) {            $tr.find('.upload_status').html('已完成');            $tr.find('.upload_action a').html('刪除');            if (typeof opt.fnComplete == 'function') {              opt.fnComplete(evt.target.response);            }            $tr.find('.upload_action').unbind('click').bind('click', removeFile);          }        }        function uploadFailed() {          $tr.find('.upload_status').html('<a href="javascript:void(0);">×</a>');          $tr.find('.upload_status a').unbind('click').bind('click', function() {            $tr.remove();          });          $tr.find('.upload_action a').html('重試');          $tr.find('.upload_action a').unbind('click').bind('click', function() {            xhr.send(fd);          });        }        function uploadCanceled() {          $tr.remove();        }        function removeFile() {          $tr.remove();          if (typeof opt.fnRemove == 'function') {            opt.fnRemove(file.name);          }        }        xhr.send(fd);      }, false);    });  };}(jQuery));

5.代碼查看地址:https://github.com/kencery/Common/tree/master/KenceryCommonMethod/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 明光市| 江川县| 元谋县| 玛曲县| 昌乐县| 辽阳县| 全椒县| 利辛县| 淮安市| 盘山县| 白朗县| 晋宁县| 田阳县| 五河县| 阿克苏市| 陇南市| 邻水| 无锡市| 漳平市| 凤庆县| 乌兰浩特市| 滁州市| 金门县| 泰宁县| 呼和浩特市| 邓州市| 会东县| 若尔盖县| 汾阳市| 廊坊市| 台中市| 神池县| 刚察县| 原阳县| 塔河县| 乌兰浩特市| 邹平县| 安阳县| 遂平县| 抚远县| 广元市|