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实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
jQuery-ui插件sortable实现自由拖动排序
Dec 01 jQuery
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
JQuery基于FormData异步提交数据文件
Sep 01 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/02/13 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
介绍下static、final、abstract区别
2015/01/30 面试题
电子商务个人自荐信
2013/12/12 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
产品售后服务承诺书
2014/05/21 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
班主任先进事迹材料
2014/12/17 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
销售口号霸气押韵
2015/12/24 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers