欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript實(shí)現(xiàn)限制上傳文件大小

 更新時(shí)間:2015年02月06日 08:39:24   投稿:hebedich  
這篇文章主要介紹了javascript實(shí)現(xiàn)限制上傳文件大小的方法和示例,需要的朋友可以參考下

前言:

  項(xiàng)目中經(jīng)常用到需要上傳文件、照片等功能,同時(shí)需要限制所上傳文件的大小。很多插件都會(huì)采用后臺(tái)請(qǐng)求驗(yàn)證,前端Js校驗(yàn)比較少。本篇介紹一個(gè)前端JS便捷判斷上傳文件大小的方法。

這個(gè)是比較好的

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <script type="text/javascript">
    var isIE = /msie/i.test(navigator.userAgent) && !window.opera;

    function fileChange(target, id) {
      var fileSize = 0;
      var filetypes = [".jpg", ".png", ".rar", ".txt", ".zip", ".doc", ".ppt", ".xls", ".pdf", ".docx", ".xlsx"];
      var filepath = target.value;
      var filemaxsize = 1024 * 2;//2M
      if (filepath) {
        var isnext = false;
        var fileend = filepath.substring(filepath.indexOf("."));
        if (filetypes && filetypes.length > 0) {
          for (var i = 0; i < filetypes.length; i++) {
            if (filetypes[i] == fileend) {
              isnext = true;
              break;
            }
          }
        }
        if (!isnext) {
          alert("不接受此文件類型!");
          target.value = "";
          return false;
        }
      } else {
        return false;
      }
      if (isIE && !target.files) {
        var filePath = target.value;
        var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
        if (!fileSystem.FileExists(filePath)) {
          alert("附件不存在,請(qǐng)重新輸入!");
          return false;
        }
        var file = fileSystem.GetFile(filePath);
        fileSize = file.Size;
      } else {
        fileSize = target.files[0].size;
      }

      var size = fileSize / 1024;
      if (size > filemaxsize) {
        alert("附件大小不能大于" + filemaxsize / 1024 + "M!");
        target.value = "";
        return false;
      }
      if (size <= 0) {
        alert("附件大小不能為0M!");
        target.value = "";
        return false;
      }
    }
  </script>
</head>
<body>
<input type="file" name="contractFileName" style="width: 500px;" onchange="fileChange(this);"/>
</body>
</html>

下面的代碼不建議使用

  代碼很簡(jiǎn)單,關(guān)鍵就是怎么用JS拿到文件然后獲取文件大小,進(jìn)而去判斷攔截。由于各種歷史原因,IE的ActiveX控件因素,獲取文件的方法可能和其他瀏覽器有所不同,所以只需稍加判斷即可。

JS代碼:

<script type="text/javascript">  
  // 判斷是否為IE瀏覽器: /msie/i.test(navigator.userAgent) 為一個(gè)簡(jiǎn)單正則
  var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
  function fileChange(target){
    var fileSize = 0;
    if (isIE && !target.files) {  // IE瀏覽器
      var filePath = target.value; // 獲得上傳文件的絕對(duì)路徑
      /**
       * ActiveXObject 對(duì)象為IE和Opera所兼容的JS對(duì)象
       * 用法:
       *     var newObj = new ActiveXObject( servername.typename[, location])
       *     其中newObj是必選項(xiàng)。返回 ActiveXObject對(duì)象 的變量名。
       *    servername是必選項(xiàng)。提供該對(duì)象的應(yīng)用程序的名稱。
       *    typename是必選項(xiàng)。要?jiǎng)?chuàng)建的對(duì)象的類型或類。
       *    location是可選項(xiàng)。創(chuàng)建該對(duì)象的網(wǎng)絡(luò)服務(wù)器的名稱。
       *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
       *   Scripting.FileSystemObject 為 IIS 內(nèi)置組件,用于操作磁盤、文件夾或文本文件,
       *  其中返回的 newObj 方法和屬性非常的多
       *  如:var file = newObj.CreateTextFile("C:\test.txt", true) 第二個(gè)參表示目標(biāo)文件存在時(shí)是否覆蓋
       *  file.Write("寫入內(nèi)容");  file.Close();
       */
      var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
      // GetFile(path) 方法從磁盤獲取一個(gè)文件并返回。
      var file = fileSystem.GetFile(filePath);
      fileSize = file.Size;  // 文件大小,單位:b
    }
    else {  // 非IE瀏覽器
      fileSize = target.files[0].size;
    }
    var size = fileSize / 1024 / 1024;
    if (size > 1) {
      alert("附件不能大于1M");
    }
  }
</script>

HTML代碼

復(fù)制代碼 代碼如下:

<input type="file"  style="width: 500px;" onchange="fileChange(this);"/>

  一個(gè) 簡(jiǎn)單、輕便、快捷 的用JS代碼來判斷文件大小的方法就OK了,至于ActiveXObject對(duì)象感興趣的可以去深究,它可以根據(jù)入?yún)⒌牟煌祷夭煌膶?duì)象,通常該對(duì)象的功能和作用也是非常有用和強(qiáng)大的。

本文內(nèi)容就到這里了,是不是非常簡(jiǎn)單實(shí)用的代碼呢,希望大家能夠喜歡。

相關(guān)文章

  • js數(shù)據(jù)類型檢測(cè)總結(jié)

    js數(shù)據(jù)類型檢測(cè)總結(jié)

    這篇文章給大家分享了js數(shù)據(jù)類型檢測(cè)的相關(guān)實(shí)例內(nèi)容,有需要的朋友可以測(cè)試下。
    2018-08-08
  • 總結(jié)JavaScript的正則與其他語言的不同之處

    總結(jié)JavaScript的正則與其他語言的不同之處

    我接觸過不少語言,我很看重一門語言的正則表達(dá)式是否強(qiáng)大,還有正則與語法的結(jié)合是否緊密.在這一點(diǎn)上,JavaScript做的還不錯(cuò),至少有正則字面量.當(dāng)然,最強(qiáng)大的還是Perl.但最近發(fā)現(xiàn)JavaScript中的正則有幾個(gè)不同于其他語言的地方,下面一起來看下。
    2016-08-08
  • javascript中toFixed()四舍五入使用方法詳解

    javascript中toFixed()四舍五入使用方法詳解

    最近做的項(xiàng)目涉及到金額的計(jì)算,有一種方式就是進(jìn)行四舍五入的規(guī)則進(jìn)行小數(shù)點(diǎn)后面的尾數(shù)處理,以前一直以為toFixed方法就是四舍五入的,這里為大家分享一下
    2018-09-09
  • Javascript中的常見排序算法

    Javascript中的常見排序算法

    用JavaScript實(shí)現(xiàn)的常見排序算法:冒泡排序,選擇排序,插入排序,謝爾排序,快速排序(遞歸),快速排序(堆棧),歸并排序,堆排序。
    2007-03-03
  • uniapp中使用vuex并持久化的方法示例

    uniapp中使用vuex并持久化的方法示例

    vuex是基于vuex.js的狀態(tài)管理工具,可以把它理解為一個(gè)倉庫,下面這篇文章主要給大家介紹了關(guān)于uniapp中如何使用vuex并持久化的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • js實(shí)現(xiàn)tab切換效果實(shí)例

    js實(shí)現(xiàn)tab切換效果實(shí)例

    這篇文章主要介紹了js實(shí)現(xiàn)的tab標(biāo)簽切換效果,功能非常簡(jiǎn)單,實(shí)現(xiàn)了點(diǎn)擊切換的效果,推薦給大家,有需要的小伙伴可以參考下。
    2015-09-09
  • JS實(shí)現(xiàn)斐波那契數(shù)列的五種方式(小結(jié))

    JS實(shí)現(xiàn)斐波那契數(shù)列的五種方式(小結(jié))

    這篇文章主要介紹了JS實(shí)現(xiàn)斐波那契數(shù)列的五種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 用javascript實(shí)現(xiàn)畫板的代碼

    用javascript實(shí)現(xiàn)畫板的代碼

    用javascript實(shí)現(xiàn)畫板的代碼...
    2007-09-09
  • 淺析JavaScript中的變量提升

    淺析JavaScript中的變量提升

    這篇文章主要介紹了淺析JavaScript中的變量提升,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 詳解 javascript對(duì)象創(chuàng)建模式

    詳解 javascript對(duì)象創(chuàng)建模式

    這篇文章主要介紹了詳解 javascript對(duì)象創(chuàng)建模式的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript的相關(guān)知識(shí)。感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論