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 相关文章推荐
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
jQuery 页面 Mask实现代码
Jan 09 Javascript
js跳转页面方法总结
Jan 29 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
VC调用javascript的几种方法(推荐)
Aug 09 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
浅谈Vue render函数在ElementUi中的应用
Sep 06 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
微信小程序 简易计算器实现代码实例
Sep 02 Javascript
js生成1到100的随机数最简单的实现方法
Feb 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
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
Python logging设置和logger解析
2019/08/28 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
美术专业学生个人自我评价
2013/09/19 职场文书
大学生毕业自我评价范文分享
2013/11/07 职场文书
《中华少年》教学反思
2014/02/15 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
销售队伍口号
2014/06/11 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
离婚被告答辩状
2015/05/22 职场文书