关于input type="file" 上传图片,如何限制上传图片的分辨率

在项目中,需要限制上传图片的分辨率,同时要兼容各浏览器(IE8及IE8以上,谷歌,火狐)。经过搜索和思考最终解决这个bug,记录下来,希望能帮助他人。

HTML代码:

<input  type="file" name="upload0" class="content" id="content" onChange="handleConFiles(this.files);">
<img class="conImage" />

CSS代码:

.conImage{
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image); /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */
    height: 1px;
    visibility:hidden; 
    overflow: hidden; 
}

JS代码:
var width, height;

function handleConFiles(files) {
    if (navigator.userAgent.indexOf("MSIE 8.0") > 0 || navigator.userAgent.indexOf("MSIE 9.0") > 0) {
        var objPreviewSizeFake = $(".conImage").get(0);//jquery对象转化为DOM对象
        var fileupload = document.getElementById("head");
        var $fileupload = $(fileupload);
        $fileupload.select();
        $fileupload.blur();
        path = document.selection.createRange().text;


        if (/"\w\W"/.test(path)) {
            path = path.slice(1, -1);
        }


        objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = path;
        width = objPreviewSizeFake.offsetWidth;
        height = objPreviewSizeFake.offsetHeight;
        if (width > 1024 || height > 120) {
            fill = false;
            alert("上传图片的尺寸应在1024*120之间");
        }


        document.selection.empty();
    } else {
        for (var i = 0; i < files.length; i++) {
            var file = files[i];
            var reader = new FileReader();
            var ret = [];
            reader.onload = function (theFile) {
                var image = new Image();
                image.onload = function () {
                    width = this.width;
                    height = this.height;
                    if (width > 1024 || width > 120) {
                        fill = false;
                        alert("头像尺寸应在1024x120之间");
                    }
                };
                image.src = theFile.target.result;
            }
            reader.readAsDataURL(file);
        }
    }
}


 其中js部分可以根据自己的需求,可以增加参数,重新封装一下;也可以将分辨率的判断放在其他地方等等。       

注:FileReader用于读取文件,属于HTML5。ie9及ie9以下不支持。

注:亲测有效


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值