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高亮效果的二种实现方法
Sep 14 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
javascript操作select元素实例分析
Mar 27 Javascript
jQuery Html控件基本操作(日常收集整理)
Mar 11 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 Javascript
解决vue路由name同名,路由重复的问题
Aug 05 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
Aug 10 Javascript
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
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
php 设计模式之 工厂模式
2008/12/19 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
详解 Python 读写XML文件的实例
2017/08/02 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python处理excel绘制雷达图
2019/10/18 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
介绍一下Ruby的特点
2013/01/20 面试题
物业保安主管岗位职责
2013/12/25 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python