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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值