uploadPreview.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. *名称:图片上传本地预览插件 v1.1
  3. *作者:周祥
  4. *时间:2013年11月26日
  5. *介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari
  6. *插件网站:http://keleyi.com/keleyi/phtml/image/16.htm
  7. *参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件显示图片后回调方法;
  8. *使用方法:
  9. <div>
  10. <img id="ImgPr" width="120" height="120" /></div>
  11. <input type="file" id="up" />
  12. 把需要进行预览的IMG标签外 套一个DIV 然后给上传控件ID给予uploadPreview事件
  13. $("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120, ImgType: ["gif", "jpeg", "jpg", "bmp", "png"], Callback: function () { }});
  14. */
  15. jQuery.fn.extend({
  16. uploadPreview: function (opts) {
  17. var _self = this,
  18. _this = $(this);
  19. opts = jQuery.extend({
  20. Img: "ImgPr",
  21. Width: 100,
  22. Height: 100,
  23. ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],
  24. Callback: function () {}
  25. }, opts || {});
  26. _self.getObjectURL = function (file) {
  27. var url = null;
  28. if (window.createObjectURL != undefined) {
  29. url = window.createObjectURL(file)
  30. } else if (window.URL != undefined) {
  31. url = window.URL.createObjectURL(file)
  32. } else if (window.webkitURL != undefined) {
  33. url = window.webkitURL.createObjectURL(file)
  34. }
  35. return url
  36. };
  37. _this.change(function () {
  38. if (this.value) {
  39. if (!RegExp("\.(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {
  40. alert("选择文件错误,图片类型必须是" + opts.ImgType.join(",") + "中的一种");
  41. this.value = "";
  42. return false
  43. }
  44. if ($.browser.msie) {
  45. try {
  46. $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))
  47. } catch (e) {
  48. var src = "";
  49. var obj = $("#" + opts.Img);
  50. var div = obj.parent("div")[0];
  51. _self.select();
  52. if (top != self) {
  53. window.parent.document.body.focus()
  54. } else {
  55. _self.blur()
  56. }
  57. src = document.selection.createRange().text;
  58. document.selection.empty();
  59. obj.hide();
  60. obj.parent("div").css({
  61. 'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)',
  62. 'width': opts.Width + 'px',
  63. 'height': opts.Height + 'px'
  64. });
  65. div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src
  66. }
  67. } else {
  68. $("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))
  69. }
  70. opts.Callback()
  71. }
  72. })
  73. }
  74. });