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实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
jQuery事件_动力节点Java学院整理
Jul 05 jQuery
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
jQuery实现获取及设置CSS样式操作详解
Sep 05 jQuery
jQuery pjax 应用简单示例
Sep 20 jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
简单的自定义php模板引擎
2016/08/26 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
如何实现vue的tree组件
2020/12/03 Vue.js
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
pandas 时间格式转换的实现
2019/07/06 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
教师专业自荐信
2014/05/31 职场文书
关于安全的标语
2014/06/10 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
解决python绘图使用subplots出现标题重叠的问题
2021/04/30 Python
Python可视化学习之seaborn调色盘
2022/02/24 Python