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 相关文章推荐
js 表格隔行颜色
Dec 02 Javascript
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
Javascript 命名空间模式
Nov 01 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
基于jQuery实现搜索关键字自动匹配功能
Mar 26 Javascript
js删除Array数组中指定元素的两种方法
Aug 03 Javascript
Three.js快速入门教程
Sep 09 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
JS原生数据双向绑定实现代码
Aug 14 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 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语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
python3如何将docx转换成pdf文件
2018/03/23 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
电脑教师的自我评价
2013/12/18 职场文书
八一慰问活动方案
2014/02/07 职场文书
运动会演讲稿100字
2014/08/25 职场文书
党员演讲稿
2014/09/04 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
实践论读书笔记
2015/06/29 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
python实现简单区块链结构
2021/04/25 Python