图片上传本地预览

基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari

代码进行小小的压缩 如果看源码 自己解压就行了

/*
*名称:图片上传本地预览插件 v1.1
*作者:周祥
*时间:2013年11月26日
*介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari
*插件网站:http://jquery.decadework.com 
*作者QQ:200592114
*参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件显示图片后回调方法;
*使用方法: 
<div>
<img id="ImgPr" width="120" height="120" /></div>
<input type="file" id="up" />
把需要进行预览的IMG标签外 套一个DIV 然后给上传控件ID给予uploadPreview事件
$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120, ImgType: ["gif", "jpeg", "jpg", "bmp", "png"], Callback: function () { }});
*/
eval(function (p, a, c, k, e, r) { e = function (c) { return (c < 62 ? '' : e(parseInt(c / 62))) + ((c = c % 62) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if ('0'.replace(0, e) == 0) { while (c--) r[e(c)] = k[c]; k = [function (e) { return r[e] || e } ]; e = function () { return '[1-9a-df-hj-zA-F]' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p } ('o.fn.p({uploadPreview:9(1){7 5=2,q=$(2);1=o.p({a:"ImgPr",r:s,t:s,h:["gif","jpeg","jpg","bmp","png"],u:9(){}},1||{});5.j=9(b){7 8=null;3(4.c!=k){8=4.c(b)}d 3(4.v!=k){8=4.v.c(b)}d 3(4.w!=k){8=4.w.c(b)}x 8};q.change(9(){3(2.l){3(!RegExp("\\.("+1.h.y("|")+")$","i").test(2.l.toLowerCase())){alert("选择文件错误,图片类型必须是"+1.h.y(",")+"中的一种");2.l="";x false}3($.browser.msie){try{$("#"+1.a).z(\'6\',5.j(2.A[0]))}catch(e){7 6="";7 f=$("#"+1.a);7 g=f.m("g")[0];5.select();3(top!=self){4.m.n.body.focus()}d{5.blur()}6=n.B.createRange().text;n.B.empty();f.hide();f.m("g").css({\'filter\':\'progid:C.D.E(sizingMethod=scale)\',\'width\':1.r+\'F\',\'height\':1.t+\'F\'});g.filters.item("C.D.E").6=6}}d{$("#"+1.a).z(\'6\',5.j(2.A[0]))}1.u()}})}});', [], 42, '|opts|this|if|window|_self|src|var|url|function|Img|file|createObjectURL|else||obj|div|ImgType||getObjectURL|undefined|value|parent|document|jQuery|extend|_this|Width|100|Height|Callback|URL|webkitURL|return|join|attr|files|selection|DXImageTransform|Microsoft|AlphaImageLoader|px'.split('|'), 0, {}));
/*
*作者:周祥
*时间:2013年11月26日
*介绍:图片上传预览插件 兼容浏览器(IE 谷歌 火狐) 不支持safari 当然如果是使用这些内核的浏览器都兼容
*网站:http://jquery.decadework.com
*版本:1.1
*参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件后回调方法;
*插件说明: 基于JQUERY扩展,需要引用JQUERY库。
*使用方法:  <div>
<img id="ImgPr" width="120" height="120" /></div>
<input type="file" id="up" />

把需要进行预览的IMG标签外 套一个DIV 然后给上传控件ID给予uploadPreview事件

$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120, ImgType: ["gif", "jpeg", "jpg", "bmp", "png"], Callback: function () { }});   

另外注意一下 使用该插件预览图片 选择文件的按钮在IE下不能是隐藏的 你可以换种方式隐藏 比如:top left 负几千像素

v1.1:更新IE10文档模式与IE10浏览器版本不一致,导致预览BUG;
     解决办法:利用TRY语句处理一下 

*/
jQuery.fn.extend({
    uploadPreview: function (opts) {
        var _self = this, _this = $(this);
        opts = jQuery.extend({
            Img: "ImgPr",
            Width: 100,
            Height: 100,
            ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],
            Callback: function () { }
        }, opts || {});
        _self.getObjectURL = function (file) {
            var url = null;
            if (window.createObjectURL != undefined) {
                url = window.createObjectURL(file);
            } else if (window.URL != undefined) {
                url = window.URL.createObjectURL(file);
            } else if (window.webkitURL != undefined) {
                url = window.webkitURL.createObjectURL(file);
            }
            return url;
        }
        _this.change(function () {
            if (this.value) {
                if (!RegExp("\.(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {
                    alert("选择文件错误,图片类型必须是" + opts.ImgType.join(",") + "中的一种");
                    this.value = "";
                    return false;
                }
                if ($.browser.msie) {
                    try {
                        $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]));
                    } catch (e) {
                        var src = "";
                        var obj = $("#" + opts.Img);
                        var div = obj.parent("div")[0];
                        _self.select();
                        if (top != self) {
                            window.parent.document.body.focus();
                        } else {
                            _self.blur();
                        }
                        src = document.selection.createRange().text;
                        document.selection.empty();
                        obj.hide();
                        obj.parent("div").css({
                            'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',
                            'width': opts.Width + 'px',
                            'height': opts.Height + 'px'
                        });
                        div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src;
                    }
                } else {
                    $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]));
                }
                opts.Callback();
            }
        });
    }
});
<!-- zhouxiang www.bbdaxia.com -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>uploadPreview演示</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script src="uploadPreview.min.js" type="text/javascript"></script>
    <script>
        $(function () {
            $("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 });
        });
    </script>
</head>
<body>
    <div><img id="ImgPr" width="120" height="120" /></div>
    <input type="file" id="up" />
</body>
</html>

下载地址:http://jquery.decadework.com