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时间函数大全
Jun 30 Javascript
Javascript字符串浏览器兼容问题分析
Dec 01 Javascript
javascript中scrollTop详解
Apr 13 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
Javascript Function.prototype.bind详细分析
Dec 29 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
JavaScript注册时密码强度校验代码
Jun 30 Javascript
Angular服务Request异步请求的实例讲解
Aug 13 Javascript
小程序如何支持使用 async/await详解
Sep 12 Javascript
Vue.js实现大屏数字滚动翻转效果
Nov 29 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 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人民币金额转大写实例代码
2015/10/02 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
python正则中最短匹配实现代码
2018/01/16 Python
Python实现的购物车功能示例
2018/02/11 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python 从相对路径下import的方法
2018/12/04 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
英语课外活动总结
2014/08/27 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
民间借贷借条如何写
2015/05/26 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS