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 相关文章推荐
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
Jqyery中同等与js中windows.onload的应用
May 10 Javascript
node.js中的fs.readlink方法使用说明
Dec 17 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
js HTML5手机刮刮乐代码
Sep 29 Javascript
JS实现简单短信验证码界面
Aug 07 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
Vue+Vant 图片上传加显示的案例
Nov 03 Javascript
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
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&amp;&amp;mysql)四
2006/10/09 PHP
Access数据库导入Mysql的方法之一
2006/10/09 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
canvas雪花效果核心代码分享
2017/02/19 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
用实例说明python的*args和**kwargs用法
2013/11/01 Python
python实现bucket排序算法实例分析
2015/05/04 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Sanic框架应用部署方法详解
2018/07/18 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
师范生实习自我鉴定
2013/11/01 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
供货协议书范本
2014/04/22 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
家长对孩子的寄语
2015/02/26 职场文书
医院感染管理制度
2015/08/05 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书