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 相关文章推荐
兼容ie和firefox js关闭代码
Dec 11 Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
教你使用javascript简单写一个页面模板引擎
May 05 Javascript
node网页分段渲染详解
Sep 05 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
简单实现js放大镜效果
Jul 24 Javascript
详解项目升级到vue-cli3的正确姿势
Jan 28 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
Vue项目实现简单的权限控制管理功能
Jul 17 Javascript
javascript移动端 电子书 翻页效果实现代码
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
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
puppeteer实现html截图的示例代码
2019/01/10 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
超市端午节活动方案
2014/01/23 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014年女职工工作总结
2014/11/27 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
军事博物馆观后感
2015/06/05 职场文书
锦旗赠语
2015/06/23 职场文书
民主生活会主持词
2015/07/01 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
javascript之Object.assign()的痛点分析
2022/03/03 Javascript
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript