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中.attr()和.data()的区别分析
Sep 03 jQuery
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
jQuery实现网页拼图游戏
Apr 22 jQuery
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
jQuery实现动态操作table行
Nov 23 jQuery
jQuery实现动态向上滚动
Dec 21 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
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
javaScript中的this示例学习详解及工作原理
2014/01/13 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
浅析Python基础-流程控制
2016/03/18 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
简约控的天堂:The Undone
2016/12/21 全球购物
关于逃课的检讨书
2014/01/23 职场文书
大学校庆策划书
2014/01/31 职场文书
小学体育教学反思
2014/01/31 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
学历公证书范本
2014/04/09 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
中秋节寄语2015
2015/03/24 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
MySQL Server 层四个日志
2022/03/31 MySQL