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实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
简述jQuery Easyui一些用法
Aug 01 jQuery
使用jQuery实现购物车结算功能
Aug 15 jQuery
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
jQuery操作动画完整实例分析
Jan 10 jQuery
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
jQuery实现广告显示和隐藏动画
Jul 04 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脚本的10个技巧(1)
2006/10/09 PHP
cmd下运行php脚本
2008/11/25 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
PHP时间处理类操作示例
2018/09/05 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
浅谈Python 对象内存占用
2016/07/15 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
python3.8下载及安装步骤详解
2020/01/15 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
护士进修自我鉴定
2014/02/07 职场文书
世界环境日活动总结
2015/02/11 职场文书
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS