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 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
Apr 02 Javascript
jQuery/CSS3图片特效插件整理推荐
Dec 07 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
分享一个原生的JavaScript拖动方法
Sep 25 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
Node.js数据库操作之连接MySQL数据库(一)
Mar 04 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
Dec 03 Javascript
推荐15个最好用的JavaScript代码压缩工具
Feb 13 Javascript
vue 实现element-ui中的加载中状态
Nov 11 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
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
python的id()函数解密过程
2012/12/25 Python
Python编写屏幕截图程序方法
2015/02/18 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
python xlsxwriter模块的使用
2020/12/24 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
财务部岗位职责
2015/02/03 职场文书
结婚通知短信大全
2015/04/17 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
python热力图实现的完整实例
2022/06/25 Python