在上傳文件過程中需要限制文件的大小,我們可以通過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]; },