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实现的背景颜色渐变动画效果示例
Mar 24 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
基于jQuery实现图片推拉门动画效果的两种方法
Aug 26 jQuery
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
jQuery中event.target和this的区别详解
Aug 13 jQuery
Jquery $.map使用方法实例详解
Sep 01 jQuery
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
jQuery ajax - getScript() 方法和getJSON方法
May 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
Banner程序
2006/10/09 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
vue中轮训器的使用
2019/01/27 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python Socket编程详细介绍
2017/03/23 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Python内存管理实例分析
2019/07/10 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
说明书范文
2014/05/07 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
2014年组织部工作总结
2014/11/14 职场文书
公司表扬稿范文
2015/05/05 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书