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用noConflict代替$的实现方法
Apr 12 jQuery
jQuery日期范围选择器附源码下载
May 23 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
jQuery实现一个简单的验证码功能
Jun 26 jQuery
使用jQuery实现动态添加小广告
Jul 11 jQuery
jQuery实现html双向绑定功能示例
Oct 09 jQuery
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 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下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
2014政务公开实施方案
2014/02/19 职场文书
暑期培训随笔感言
2014/03/10 职场文书
派出所所长先进事迹
2014/05/19 职场文书
英语专业自荐书
2014/06/13 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
财务部岗位职责范本
2015/04/14 职场文书
Go 中的空白标识符下划线
2022/03/25 Golang
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL