js 判斷上傳文件大小

我們在做文件上傳時,為瞭實現異步上傳的效果,一般會選擇采用iframe的形式來進行文件的上傳,但我們不能像ajax那樣對服務端返回的數據進行處理,從而來進行文件大小以及文件樣式的判斷,所以我們一般也會想到使用js對上傳的文件大小以及格式進行初步的判斷,在服務端再進行一次判斷(防止瀏覽器拒絕執行腳本文件)。

 

 

以下提供一種方法用js判斷文件大小。

 

 

    var url = window.location.href,  type = url.substr(url.lastIndexOf('/')+1);

 

//     console.log(type);

    

    var allowType = {

        ".bmp":1, ".png":1, ".jpeg":1, ".jpg":1, ".gif":1,

        ".mp3":2, ".wma":2, ".wav":2, ".amr":2,

        ".rm":3, ".rmvb":3, ".wmv":3, ".avi":3, ".mpg":3, ".mpeg":3, ".mp4":3

        }; 

 

 

    var allowSize = {1:2097152, 2:5242880, 3:20971520};

 

    var errMsg = {

            "0" : ’圖片格式不正確<br/>'

                    + '音頻格式不正確<br/>'

                    + '視頻格式不正確<br/>',

            "1" : ‘圖片格式不正確',

            "2" : '音頻格式不正確',

            "3" : '視頻格式不正確'

        };

    var errSizeMsg = {

            '1':'圖片文件小於2M',    

            '2':'音頻文件小於5M',    

            '3':'視頻文件小於20M',    

        }

    

function checkFileType(filename, type){

     var ext = filename.substr(filename.lastIndexOf(".")).toLowerCase(),

     res = allowType[ext];

     if (type == 0) {

         return !!res;

     } else {

         return type == res;

     } 

}

 

function checkFileSize(target, size){

    var isIE = /msie/i.test(navigator.userAgent) && !window.opera;

    var fileSize = 0;

    if (isIE && !target.files)

    {

        var filePath = target.value;

        var fileSystem = new ActiveXObject("Scripting.FileSystemObject");

        var file = fileSystem.GetFile (filePath);

        fileSize = file.Size;

    } else {

        fileSize = target.files[0].size;

    }

  //  var fsize = fileSize / 1024*1024;

    if(parseInt(fsize) >= parseInt(size)){

        return false;

    }else{

        return true;

    }

 

}

 

 

function upload(obj){

    var filename = jQuery.trim(jQuery('#uploadFile').val());

    if (!filename || filename == ""){ // 提交前的再次檢測

        alert('選擇需要上傳的文件');

        return false;

    }

    if (!checkFileType(filename, type)){

        alert(’文件格式不正確');

        return false;

    }

    

    var ext = filename.substr(filename.lastIndexOf(".")).toLowerCase();

    var res = allowType[ext];

    if(!checkFileSize(obj,allowSize[res])){

        alert(errSizeMsg[res]);

        return false;

    }

    

   //其他處理

}

 

 

//uploadFile為上傳控件的id,obj為上傳控件的本身(this)

發佈留言