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的MessageBox
Dec 03 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
Mar 05 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
js Function类型
2011/12/04 Javascript
javascrip关于继承的小例子
2013/05/10 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python实现学生成绩管理系统
2020/04/05 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
keras得到每层的系数方式
2020/06/15 Python
python如何设置静态变量
2020/09/07 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
医院辞职信范文
2014/01/17 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python