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和JQuery的鼠标mouse事件冒泡处理
Jun 19 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
Aug 05 Javascript
极力推荐10个短小实用的JavaScript代码段
Aug 03 Javascript
详解js的六大数据类型
Dec 27 Javascript
angular forEach方法遍历源码解读
Jan 25 Javascript
js实现点击切换checkbox背景图片的简单实例
May 08 Javascript
JS身份证信息验证正则表达式
Jun 12 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 Javascript
JavaScript实现区块链
Mar 14 Javascript
javascript json对象小技巧之键名作为变量用法分析
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的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
python编写暴力破解FTP密码小工具
2014/11/19 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
wxPython实现列表增删改查功能
2019/11/19 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
应征英语教师求职信
2013/11/27 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers