Rumah hujung hadapan web Tutorial H5 利用Jquery使用HTML5的FormData属性实现文件上传

利用Jquery使用HTML5的FormData属性实现文件上传

Apr 25, 2017 am 11:45 AM
html5 jquery Muat naik fail

本文给大家介绍的是利用Jquery使用HTML5的FormData属性实现对文件的上传的方法和实例,非常的实用,有需要的小伙伴可以参考下。

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 () {
         $(&#39;#uploadTable&#39;).SalesMOUNDUpload({
           saveUrl: &#39;/Test/Save&#39;,
           jqInput: $(&#39;#txtFile&#39;),
           fnRemove: removeFile,
           fnComplete: function (d) {
             window.console.log(&#39;complete &#39; + d);
           }
         });
       });
       function removeFile(d) {
         $.post(&#39;/Test/Remove&#39;, { "filename": d }, function(r) {
           
         });
       }
     </script>
   </body>
 </html>
Salin selepas log masuk

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;
 }
Salin selepas log masuk

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: &#39;&#39;,
      jqInput: &#39;&#39;,
      maxSize: 1024 * 1024 * 100, //100M
      fnRemove: &#39;&#39;, //移除文件 ,参数:文件名
      fnComplete: &#39;&#39; //每个文件成功 ,参数:服务器端返回内容
    };
    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 == &#39;undefine&#39;) {
        alert(&#39;浏览器版本太低,不支持改上传!&#39;);
        return;
      }
      //表头
      if ($this.find(&#39;thead&#39;).length == 0) {
        var $thead = $(&#39;<thead>&#39;);
        var $th_tr = $(&#39;<tr>&#39;);
        $th_tr.append(&#39;<th>文件名</th>&#39;);
        $th_tr.append(&#39;<th>类型</th>&#39;);
        $th_tr.append(&#39;<th>大小</th>&#39;);
        $th_tr.append(&#39;<th>状态</th>&#39;);
        $th_tr.append(&#39;<th>操作</th>&#39;);
        $th_tr.appendTo($thead);
        $this.append($thead);
      }
      opt.jqInput[0].addEventListener(&#39;change&#39;, function(e) {
        var file = this.files[0];
        if (!file) {
          return;
        }
        if (file.size > opt.maxSize) {
          window.alert(&#39;文件超过最大&#39;);
          return;
        }
        var fd = new FormData();
        var $table = $this;
        fd.append("uploadFile", file);
        var xhr = new XMLHttpRequest();
        xhr.open(&#39;POST&#39;, 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 = $(&#39;<tr>&#39;);
        $tr.append(&#39;<td class="upload_name">&#39; + file.name + &#39;</td>&#39;);
        $tr.append(&#39;<td class="upload_type">&#39; + file.type + &#39;</td>&#39;);
        $tr.append(&#39;<td class="upload_size">&#39; + getByteToM(file.size) + &#39;M&#39; + &#39;</td>&#39;);
        $tr.append(&#39;<td class="upload_status">&#39; + 0 + &#39;</td>&#39;);
        $tr.append(&#39;<td class="upload_action"><a href="javascript:void(0);">&#39; + &#39;取消&#39; + &#39;</a></td>&#39;);
        $tr.find(&#39;.upload_action a&#39;).unbind(&#39;click&#39;).bind(&#39;click&#39;, function() {
          xhr.abort();
        });
        $table.append($tr);
        function uploadProgress(evt) {
          if (evt.lengthComputable) {
            var percentComplete = Math.round(evt.loaded * 100 / evt.total);
            $tr.find(&#39;.upload_status&#39;).html(Math.round(percentComplete) + &#39;%&#39;);
          } else {
            $tr.find(&#39;.upload_status&#39;).html(&#39;unable to compute&#39;);
          }
        }
        function uploadComplete(evt) {
          if (evt.target.status == 200) {
            $tr.find(&#39;.upload_status&#39;).html(&#39;已完成&#39;);
            $tr.find(&#39;.upload_action a&#39;).html(&#39;删除&#39;);
            if (typeof opt.fnComplete == &#39;function&#39;) {
              opt.fnComplete(evt.target.response);
            }
            $tr.find(&#39;.upload_action&#39;).unbind(&#39;click&#39;).bind(&#39;click&#39;, removeFile);
          }
        }
        function uploadFailed() {
          $tr.find(&#39;.upload_status&#39;).html(&#39;<a href="javascript:void(0);">×</a>&#39;);
          $tr.find(&#39;.upload_status a&#39;).unbind(&#39;click&#39;).bind(&#39;click&#39;, function() {
            $tr.remove();
          });
          $tr.find(&#39;.upload_action a&#39;).html(&#39;重试&#39;);
          $tr.find(&#39;.upload_action a&#39;).unbind(&#39;click&#39;).bind(&#39;click&#39;, function() {
            xhr.send(fd);
          });
        }
        function uploadCanceled() {
          $tr.remove();
        }
        function removeFile() {
          $tr.remove();
          if (typeof opt.fnRemove == &#39;function&#39;) {
            opt.fnRemove(file.name);
          }
        }
        xhr.send(fd);
      }, false);
    });
  };
}(jQuery));
Salin selepas log masuk

Atas ialah kandungan terperinci 利用Jquery使用HTML5的FormData属性实现文件上传. 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)

Sempadan Jadual dalam HTML Sempadan Jadual dalam HTML Sep 04, 2024 pm 04:49 PM

Panduan untuk Sempadan Jadual dalam HTML. Di sini kita membincangkan pelbagai cara untuk menentukan sempadan jadual dengan contoh Sempadan Jadual dalam HTML.

HTML jidar-kiri HTML jidar-kiri Sep 04, 2024 pm 04:48 PM

Panduan untuk HTML margin-kiri. Di sini kita membincangkan gambaran keseluruhan ringkas tentang HTML margin-left dan Contoh-contohnya bersama-sama dengan Pelaksanaan Kodnya.

Jadual Bersarang dalam HTML Jadual Bersarang dalam HTML Sep 04, 2024 pm 04:49 PM

Ini ialah panduan untuk Nested Table dalam HTML. Di sini kita membincangkan cara membuat jadual dalam jadual bersama-sama dengan contoh masing-masing.

Susun Atur Jadual HTML Susun Atur Jadual HTML Sep 04, 2024 pm 04:54 PM

Panduan untuk Susun Atur Jadual HTML. Di sini kita membincangkan Nilai Susun Atur Jadual HTML bersama-sama dengan contoh dan output n perincian.

Pemegang Tempat Input HTML Pemegang Tempat Input HTML Sep 04, 2024 pm 04:54 PM

Panduan untuk Pemegang Tempat Input HTML. Di sini kita membincangkan Contoh Pemegang Tempat Input HTML bersama-sama dengan kod dan output.

Senarai Tertib HTML Senarai Tertib HTML Sep 04, 2024 pm 04:43 PM

Panduan kepada Senarai Tertib HTML. Di sini kami juga membincangkan pengenalan senarai dan jenis Tertib HTML bersama-sama dengan contoh mereka masing-masing

Memindahkan Teks dalam HTML Memindahkan Teks dalam HTML Sep 04, 2024 pm 04:45 PM

Panduan untuk Memindahkan Teks dalam HTML. Di sini kita membincangkan pengenalan, cara teg marquee berfungsi dengan sintaks dan contoh untuk dilaksanakan.

Butang onclick HTML Butang onclick HTML Sep 04, 2024 pm 04:49 PM

Panduan untuk Butang onclick HTML. Di sini kita membincangkan pengenalan, kerja, contoh dan onclick Event masing-masing dalam pelbagai acara.

See all articles