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 相关文章推荐
学习ExtJS(二) Button常用方法
Oct 07 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
Nov 13 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
Aug 19 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
JavaScript判断浏览器和hack滚动条的写法
Jul 23 Javascript
jquery animate动画持续运动的实例
Nov 29 jQuery
了解ESlint和其相关操作小结
May 21 Javascript
js实现扫雷源代码
Nov 27 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
SONY SRF-M100的电路分析
2021/03/02 无线电
php实现文件下载(支持中文文名)
2013/12/04 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
Javascript Object.extend
2010/05/18 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
jquery自定义组件实例详解
2020/12/31 jQuery
深入解读Python解析XML的几种方式
2016/02/16 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
python读取excel表格生成erlang数据
2017/08/26 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
Python文件操作方法详解
2020/02/09 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
法国在线药房:DoctiPharma
2020/10/21 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
大学生村官典型材料
2014/01/12 职场文书
《月迹》教学反思
2014/02/19 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
初三学生个人自我评定
2014/04/06 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
python游戏开发Pygame框架
2022/04/22 Python