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解析与序列化json数据(二)序列化探讨
Feb 01 Javascript
Jquery 动态生成表格示例代码
Dec 24 Javascript
jquery实现input输入框实时输入触发事件代码
Jan 28 Javascript
让人蛋疼的JavaScript语法特性
Sep 30 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
Jul 27 Javascript
js实现上传图片预览方法
Oct 25 Javascript
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
详解ES6系列之私有变量的实现
Nov 21 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
JS实现吸顶特效
Jan 08 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 printf输出格式使用说明
2010/12/05 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
Skyscanner波兰:廉价航班
2017/11/07 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
职称自我鉴定
2013/10/15 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
担保书怎么写 ?
2019/04/22 职场文书
MySQL实现配置主从复制项目实践
2022/03/31 MySQL