js上傳限制文件大小


在上傳文件過程中需要限制文件的大小,我們可以通過file對象的size屬性來判斷;

思路很簡單,麻煩的地方可能是文件大小的計算;

我們需要做的是在共用函數中定義這樣的方法:

/* 限制文件大小,返回 boolean
         * file:文件對象
         * limiteSize:限制大小---例如:"50MB"
         * */
        limitFileSize: function (file, limitSize) {
            var arr = ["KB", "MB", "GB"]
            var limit = limitSize.toUpperCase();
            var limitNum = 0;
            for (var i = 0; i < arr.length; i++) {
                var leval = limit.indexOf(arr[i]);
                if (leval > -1) {
                    limitNum = parseInt(limit.substr(0, leval)) * Math.pow(1024, (i + 1))
                    break
                }
            }
            if (file.size > limitNum) {
                return false
            }
            return true
        },

然后在需要上傳之前調用對file對象校驗即可

tools.limitFileSize(file,'50MB')

關於file對象的獲取:

  如果使用自定義的input標簽,在dom元素的files屬性中獲取;

  如果使用第三方的上傳組件,一般在上傳前的鈎子函數的參數中;

  如果需要告訴用戶此次上傳文件的大小,你可以定義這樣的函數,相當於上訴函數的逆運算:

        /*
        * 格式化文件大小顯示
        * value : file文件的大小值
        * */
        formateSize:function(value){
            if (null == value || value == '') {
                return "0 Bytes";
            }
            var unitArr = new Array("Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
            var index = 0;
            var srcsize = parseFloat(value);
            index = Math.floor(Math.log(srcsize) / Math.log(1024));
            var size = srcsize / Math.pow(1024, index);
            size = size.toFixed(2);//保留的小數位數
            return size + unitArr[index];
        },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM