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功能函数代码
Jun 23 Javascript
javawscript 三级菜单的实现原理
Jul 01 Javascript
JavaScript日历实现代码
Sep 12 Javascript
JavaScript面向对象(极简主义法minimalist approach)
Jul 17 Javascript
jquery手风琴特效插件
Feb 04 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
微信小程序 scroll-view组件实现列表页实例代码
Dec 14 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
Feb 04 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
正则表达式语法
2006/10/09 Javascript
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
js电话号码验证方法
2015/09/28 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python实现读取json文件到excel表
2017/11/18 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
教育实习生的自我评价分享
2013/11/21 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS