jquery实现图片上传前本地预览


Posted in jQuery onApril 28, 2017

前段时间遇到一个问题,前端想实现图片上传预览(不经过后端PHP或JAVA处理),用户点击file按钮上传文件,点击确定马上就能看到预览的效果,但在实现的时候无论怎样都取不到file上图片的真实路径,得到的反而是C:\fakepath\a.jpg,这个路径是错误的。百度之后得到说浏览器基于保护用户的相关安全措施,隐藏了上传的真实路径,用fakepath代替,当然,调整浏览器的相关安全设置可以解决这个问题。但我们不可能让所有用户都通过设置浏览器的安全设置来进行图片上传,这种方法在网络交互上显然不现实。

名称:图片上传本地预览插件 v1.1

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

插件网站: http://keleyi.com/keleyi/phtml/image/16.htm

jquery实现图片上传前本地预览

参数说明:

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 () { }});

实例:

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
    }
//高版本Jquey使用 if ($.support.leadingWhitespace)
    if ($.browser.msie) { //低版本jquery中使用的方式
     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()
   }
  })
 }
});

调用:

$(function () {
 $("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 });
});

HTML结构:

<div>
<img id="ImgPr" width="120" height="120" />
</div>
<input type="file" id="up" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
Apr 04 jQuery
jQuery异步提交表单实例
May 30 jQuery
jQuery复合事件用法示例
Jun 10 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
jQuery接受后台传递的List的实例详解
Aug 02 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 jQuery
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
jQuery基于随机数解决中午吃什么去哪吃问题示例
Dec 29 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 #jQuery
jQuery tip提示插件(实例分享)
Apr 28 #jQuery
jQuery自定义元素右键点击事件(实现案例)
Apr 28 #jQuery
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 #jQuery
jquery ui sortable拖拽后保存位置
Apr 27 #jQuery
jquery 禁止鼠标右键并监听右键事件
Apr 27 #jQuery
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 #jQuery
You might like
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
PHP实现验证码校验功能
2017/11/16 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
js实现拖拽效果
2015/02/12 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
Python抓取京东图书评论数据
2014/08/31 Python
Python中bisect的用法
2014/09/23 Python
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
恒华伟业笔试面试题
2015/02/26 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
高中英语教学反思
2014/02/04 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
医生见习报告范文
2014/11/03 职场文书
签证工作证明模板
2015/06/15 职场文书
JavaScript实现登录窗体
2021/06/22 Javascript
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS