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代码
May 27 Javascript
JavaScript学习点滴 call、apply的区别
Oct 22 Javascript
一些常用的JavaScript函数(json)附详细说明
May 25 Javascript
纯JS实现旋转图片3D展示效果
Apr 12 Javascript
解析Node.js异常处理中domain模块的使用方法
Feb 16 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
Dec 08 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
Sep 20 jQuery
Nuxt配合Node在实际生产中的应用详解
Aug 07 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
vuejs实现下拉框菜单选择
Oct 23 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
计数器详细设计
2006/10/09 PHP
php中JSON的使用方法
2015/04/30 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
Javascript中暂停功能的实现代码
2007/03/04 Javascript
use jscript with List Proxy Server Information
2007/06/11 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
详解python 发送邮件实例代码
2016/12/22 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
求职自荐书范文
2013/12/04 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
机关单位动员会主持词
2014/03/20 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
关于幸福的感言
2015/08/03 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang