JS实现上传图片实时预览功能


Posted in Javascript onMay 22, 2017

前段时间在网络上找的代码,修改了一部分用在了项目里。原博客地址找不到了,如果原作者看到的话留言我,将于第一时间删除。

//js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3
  function PreviewImage(fileObj) {
    //创建dom元素
    var divPreviewId = 'divPreview_' + fileObj.name;
    var imgPreviewId = 'imgHeadPhoto_' + fileObj.name;
    var html='<div id="'+divPreviewId+'">'+
          '<img id="'+imgPreviewId+'" src="images/moren.jpg" style="width: 120px; height: 120px; border: solid 1px #d2e2e2;" />'+
         '</div>';
    $('#'+divPreviewId).remove();
    $(fileObj).after(html);
    //进行限制
    var allowExtention = ".jpg,.bmp,.gif,.png"; //允许上传文件的后缀名document.getElementById("hfAllowPicSuffix").value;
    var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase();
    var browserVersion = window.navigator.userAgent.toUpperCase();
    if (allowExtention.indexOf(extention) > -1) {  //格式正确
      if (fileObj.files) {  //HTML5实现预览,兼容chrome、火狐7+等
        if (window.FileReader) {
          var reader = new FileReader();
          reader.onload = function (e) {
            document.getElementById(imgPreviewId).setAttribute("src", e.target.result);
          }
          reader.readAsDataURL(fileObj.files[0]);
        } else if (browserVersion.indexOf("SAFARI") > -1) {
          $('#'+divPreviewId).remove();
          alert("不支持Safari6.0以下浏览器的图片预览!");
        }
      } else if (browserVersion.indexOf("MSIE") > -1) {
        if (browserVersion.indexOf("MSIE 6") > -1) {//ie6
          document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
        } else {//ie[7-9]
          fileObj.select();
          if (browserVersion.indexOf("MSIE 9") > -1)
            fileObj.blur(); //不加上document.selection.createRange().text在ie9会拒绝访问
          var newPreview = document.getElementById(divPreviewId + "New");
          if (newPreview == null) {
            newPreview = document.createElement("div");
            newPreview.setAttribute("id", divPreviewId + "New");
            newPreview.style.width = document.getElementById(imgPreviewId).width + "px";
            newPreview.style.height = document.getElementById(imgPreviewId).height + "px";
            newPreview.style.border = "solid 1px #d2e2e2";
          }
          newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";
          var tempDivPreview = document.getElementById(divPreviewId);
          tempDivPreview.parentNode.insertBefore(newPreview, tempDivPreview);
          tempDivPreview.style.display = "none";
        }
      } else if (browserVersion.indexOf("FIREFOX") > -1) {//firefox
        var firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);
        if (firefoxVersion < 7) {//firefox7以下版本
          document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());
        } else {//firefox7.0+          
          document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));
        }
      } else {
        document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
      }
    } else {
      $('#'+divPreviewId).remove();
      alert("仅支持" + allowExtention + "为后缀名的文件!");
      fileObj.value = ""; //清空选中文件
      if (browserVersion.indexOf("MSIE") > -1) {
        fileObj.select();
        document.selection.clear();
      }
      fileObj.outerHTML = fileObj.outerHTML;
    }
    return fileObj.value;  //返回路径
  }

以上所述是小编给大家介绍的JS实现上传图片实时预览功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
Oct 19 Javascript
Extjs优化(一)删除冗余代码提高运行速度
Apr 15 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
Js实现无刷新删除内容
Apr 29 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
javascript bom是什么及bom和dom的区别
Nov 26 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
javascript实现移动端红包雨页面
Jun 23 Javascript
详解Angular 4.x NgIf 的用法
May 22 #Javascript
JS实现无缝循环marquee滚动效果
May 22 #Javascript
jQuery表单验证之密码确认
May 22 #jQuery
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 #Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 #Javascript
JavaScript表单验证实现代码
May 22 #Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 #jQuery
You might like
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
基于Python的接口测试框架实例
2016/11/04 Python
Django日志模块logging的配置详解
2017/02/14 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
经理秘书岗位职责
2013/11/14 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
派出所所长先进事迹
2014/05/19 职场文书
校园文明标语
2014/06/13 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP