javascript实现的图片预览和上传功能示例【兼容IE 9】


Posted in Javascript onMay 01, 2020

本文实例讲述了javascript实现的图片预览和上传功能。分享给大家供大家参考,具体如下:

下载DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload

对于现代浏览器来说,要实现图片预览非常简单:

1、fileReader.readAsDataURL(file)

2、window.URL.createObjectURL(file)

以上两种方法分别可以得到一个base64和一个blob对象的URL地址,从而实现预览。但是,他们只支持在IE10+,显然这是不够的,如何实现低版本IE浏览器的图片预览呢?代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <script type="text/javascript" language="javascript">
    $('#preview_fake').change(function () {
      previewImg($(this), $('#preview'));

    });
    function previewImg($inputId, $previewId) {
      var inputId = $inputId[0],
        previewId = $previewId[0];
      $previewId.empty();
      if(/msie/.test(navigator.userAgent.toLowerCase())){
        if($.support.version == 6.0){
          $previewId.attr("src",inputId.value);
        }else{
          inputId.select();
          var reallocalpath = document.selection.createRange().text;
          previewId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod='scale',src=\"" + reallocalpath + "\")";
          // 设置img的src为base64编码的透明图片 取消显示浏览器默认图片
          previewId.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';
        }
      }else {
        $previewId.attr("src",window.URL.createObjectURL(previewFake.files[0]));
      }
    }
 </script>

 </head>
 <body>
   <form id="form1" runat="server">
   <div>
     选择图片:<input type="file" size="20" id='preview_fake'" /> 
   </div>
    <div id="preview" style="width: 300px; height: 300px">
   </div>    
   </form>
 </body>
</html>

这样,我们就能够在IE10- 下预览上传的图片了。

在这里,有必要对几个参数说明一下,以免后人再入坑!

progid:DXImageTransform.Microsoft.AlphaImageLoader([enabled=bEnabled ,] [sizingMethod=sSize ,] src=sURL)

enabled: 可选。布尔值(Boolean)。设置或检索滤镜是否激活。

  • true:默认值。滤镜激活。
  • false:滤镜被禁止。

sizingMethod:可选。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。

  • crop:剪切图片以适应对象尺寸。
  • image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
  • scale:缩放图片以适应对象的尺寸边界。

src: 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

以上,可以实现低版本IE浏览器的图片预览,但要上传到服务器还需要一番周折。对于单张图片,可以通过<form>表单提交,但对于多张图片,这需要flash技术的支持,实现起来相当麻烦。

这里,楼主推荐一个现有的轮子:webuploader 组件。

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

Javascript 相关文章推荐
按给定几率进行随机抽取的js代码
Dec 28 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
jquery转盘抽奖功能实现
Nov 13 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
利用JS实现数字增长
Jul 28 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 Javascript
Angular中的$watch、$watchGroup、$watchCollection
Jun 25 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
Apr 24 Javascript
JS精髓原型链继承及构造函数继承问题纠正
Jun 16 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 #jQuery
jQuery实现移动端图片上传预览组件的方法分析
May 01 #jQuery
jQuery实现的上拉刷新功能组件示例
May 01 #jQuery
JS深入学习之数组对象排序操作示例
May 01 #Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
Apr 30 #Javascript
浅谈Vue3.0新版API之composition-api入坑指南
Apr 30 #Javascript
JavaScript变量Dom对象的所有属性
Apr 30 #Javascript
You might like
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
javascript调试说明
2010/06/07 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
谈谈JS中的!!
2017/12/07 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
工程预算与管理应届生求职信
2013/10/06 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
地球一小时宣传标语
2014/06/24 职场文书
五年级学生评语大全
2014/12/26 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
2015初中团委工作总结
2015/07/28 职场文书
会计主管竞聘书
2015/09/15 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python