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的tab切换效果代码[代码分离]
Apr 11 Javascript
心扬JS分页函数代码
Sep 10 Javascript
Javascript毫秒数用法实例
Feb 05 Javascript
Javascript编写俄罗斯方块思路及实例
Jul 07 Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
Apr 27 Javascript
js实现弹窗居中的简单实例
Oct 09 Javascript
jquery实现拖动效果(代码分享)
Jan 25 Javascript
Javascript中prototype与__proto__的关系详解
Mar 11 Javascript
vue侧边栏动态生成下级菜单的方法
Sep 07 Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 Javascript
在layui下对元素进行事件绑定的实例
Sep 06 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下通过file_get_contents的代理使用方法
2011/02/16 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
PHP实现简易图形计算器
2020/08/28 PHP
关于跨站脚本攻击问题
2011/12/22 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
爬虫利器Puppeteer实战
2019/01/09 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
2015年专项整治工作总结
2015/04/03 职场文书