1. 程式人生 > >圖片上傳本地預覽外掛

圖片上傳本地預覽外掛

注意點:
1.   ie10 標準文件模式下 上傳的圖片不能正常 這時候有解決辦法新增以下程式碼至head中:


<meta http-equiv="X-UA-Compatible" content="IE=9">

2. 由於ie不相容find() 這時候賦值img的時候需要換一種方式,判斷是否是ie核心:


貼上以下程式碼:

html:

 
  <div class="imgitem secondImg">
  <div class="u-add-img-icon"></div>
  <input id="fileImage2" type="file" multiple="" class="u-fileInput">
  <div class="imgcontainer"><img src="" alt="" class="idImg"/></div> 
  </div>
  <!-- 放大圖 -->
  <div class="big_ime_one"> 
<img id="big_img" src=""/> 
  </div>
  <div class="big_ime_make_one"></div>
  <!-- 放大圖 -->

css:

.imgitem {width: 58px;height: 84px;display: inline-block;text-align: center;line-height: 160px;position: relative;}
.u-fileInput{width: 58px;height: 84px;overflow: hidden;position: absolute;right: 0;top: 0;opacity: 0;filter: alpha(opacity=0);  cursor: pointer;  } 
.u-add-img-icon {width: 58px; height: 84px; background: url(Images/setshop.png) no-repeat; display: inline-block; vertical-align: middle;}
.imgcontainer{width:58px;height:84px;position:absolute;right:0;top:0;display:none;}
.imgcontainer img{width:58px;height:84px;}
.big_ime_make_one {text-align:center;z-index: 9998;position:fixed;top:0;left:0;width:100%;height:100%; background:#000;opacity:0.4;filter:alpha(opacity=40);display:none}
.big_ime_one {z-index:9999;position:fixed;top:3%;left:30%;display:none;text-align:center; } 

js外掛:



jQuery.fn.extend({
    uploadPreview: function (opts) {
        var _self = this,
            _this = $(this);
        opts = jQuery.extend({
            imgObj: null,
            type: ["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(!opts.imgObj){
                    return;
                }
                if (!RegExp("\.(" + opts.type.join("|") + ")$", "i").test(this.value.toLowerCase())) {
                    alert("檔案格式錯誤,必須是" + opts.type.join(",") + "中的一種");
                    this.value = "";
                    return false
                }
                if (document.selection) {
                    try {
                       opts.imgObj.attr('src', _self.getObjectURL(this.files[0]))
                    } catch (e) {
                        var src = "";
                        var obj = opts.imgObj;
                        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)'
                        });
                        div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src;
console.log(div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src);
                    }
                } else {
                    opts.imgObj.attr('src', _self.getObjectURL(this.files[0]))
                }
                opts.callback()
            }
        })
    }
});

js:

<script>
<!-- *名稱:圖片上傳本地預覽 -->
<!-- *作者:米芬 -->
<!-- *時間:2017年6月6日 --> 
$(".u-fileInput").each(function(){
var $this = $(this);
$this.uploadPreview({imgObj:$this.next().find("img"), callback:uploadHandler});
//獲取url設定img src成功後,回撥,隱藏add-icon;顯示圖片
function uploadHandler() {
$this.next().show();
$this.prev().hide();  

});
$(function(){
 if($('.idImg').attr('src') == undefined){
console.log('圖片沒有src值');
 }else{
$('.u-fileInput').attr("disabled",false); 
$(".imgcontainer").click(function(){ 
// 判斷ie核心
if($.browser.msie){
var imgSrc = $(this).get(0).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src; 
}else{
var imgSrc = $(this).find("img").attr("src");
console.log($(this).find("img").attr("src")); 
}  
  $(".big_ime_one,.big_ime_make_one").show();  
$("#big_img").prop("src",imgSrc); 
})
}
// <!-- 關閉 - ->
$(".big_ime_make_one").click(function(){
$(".big_ime_one,.big_ime_make_one").hide(); 
})
});

</script>

貼上效果圖: