/*
*
*时间:2015年12月30日
*参数说明: img:图片id;width:预览宽度;height:预览高度;imgtype:支持文件类型;callback:选择文件显示图片后回调方法;
*使用方法:
$("#up").uploadpreview({ img: "imgpr", width: 120, height: 120, imgtype: ["gif", "jpeg", "jpg", "bmp", "png"], callback: function () { }});
*/
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", "swf"],
imgtype: ["pdf"],
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 && $.browser.msie) {
try {
// ie 高版本
$("#" + opts.img).attr('src', _self.getobjecturl(this.files[0]))
} catch (e) {
// $(this).show(); //隐藏的file先显示出来 否则不能上传,ie下兼容性问题
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'
});
try {
div.filters.item("dximagetransform.microsoft.alphaimageloader").src = src // 有些浏览器出于安全,没有访问本地文件的权限,这里会报错
}
catch (e) {
// 兼容 ie 低版本
try {
div.filters.item("dximagetransform.microsoft.alphaimageloader").src = _this.val();
}
catch (e) {
// 浏览器安全问题
// ie兼容模式下 需要 把 显示才能读取本地文件
alert("您的浏览器不支持图片预览,您可以把该网站添加到浏览器信任列表,或者升级浏览器到最新版本。");
}
}
}
} else {
// 非ie 浏览器
$("#" + opts.img).attr('src', _self.getobjecturl(this.files[0]))
}
opts.callback()
}
})
}
});