jquery实现图片上传之前预览的方法


Posted in Javascript onJuly 11, 2015

本文实例讲述了jquery实现图片上传之前预览的方法。分享给大家供大家参考。具体实现方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery-1.8.1.min.js" type="text/javascript"></script>
<script>
/*
*参数说明: 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
        }
        if ($.browser.msie) {
          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 });
});
</script>
</head>
<body>
<div style="width:500px;margin:0px auto;"><h2>图片上传预览演示</h2>
<div><img id="ImgPr" width="120" height="120" /></div>
<input type="file" id="up" />
</div>
</body>
</html>

希望本文所述对大家的jquery程序设计有所帮助。

Javascript 相关文章推荐
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
Jan 07 Javascript
JavaScript将一个数组插入到另一个数组的方法
Mar 19 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
javascript数组克隆简单实现方法
Dec 16 Javascript
JavaScript操作select元素和option的实例代码
Jan 29 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
使用OPENLAYERS3实现点选的方法
Sep 24 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 Javascript
小程序实现抽奖动画
Apr 16 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
Oct 23 Javascript
JS实现可以用键盘方向键控制的动画
Dec 11 Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 #Javascript
javascript中JSON对象与JSON字符串相互转换实例
Jul 11 #Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 #Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 #Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 #Javascript
JavaScript模板引擎用法实例
Jul 10 #Javascript
JavaScript实现打字效果的方法
Jul 10 #Javascript
You might like
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python随机取list中的元素方法
2018/04/08 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
Python实战之制作天气查询软件
2019/05/14 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
中专生求职自荐信范文
2013/12/22 职场文书
作弊检讨书1000字
2014/02/01 职场文书
社区义诊活动总结
2014/04/30 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
2016猴年春节问候语
2015/11/11 职场文书
教师个人教学反思
2016/02/23 职场文书