JS实现图片上传预览功能


Posted in Javascript onNovember 21, 2016

废话不多说了,直接给大家贴js代码了,具体代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title></title>
</head>
<body>
  <div id="divPreview">
    <img id="imgHeadPhoto" src="noperson.jpg" style="width: 160px; height: 170px; border: solid 1px #d2e2e2;"
      alt="" />
  </div>
  <input type="file" onchange="PreviewImage(this,'imgHeadPhoto','divPreview');" size="20" />
  <script type="text/javascript">
    //js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3
    function PreviewImage(fileObj, imgPreviewId, divPreviewId) {
      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) {
            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 {
        alert("仅支持" + allowExtention + "为后缀名的文件!");
        fileObj.value = ""; //清空选中文件
        if (browserVersion.indexOf("MSIE") > -1) {
          fileObj.select();
          document.selection.clear();
        }
        fileObj.outerHTML = fileObj.outerHTML;
      }
      return fileObj.value;  //返回路径
    }
  </script>
</body>
</html>

以上所述是小编给大家介绍的JS实现图片上传预览功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
Jan 04 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
值得分享的JavaScript实现图片轮播组件
Nov 21 #Javascript
使用Ajax生成的Excel文件并下载的实例
Nov 21 #Javascript
javascript入门之数组[新手必看]
Nov 21 #Javascript
jQuery UI插件实现百度提词器效果
Nov 21 #Javascript
javascript中Number的方法小结
Nov 21 #Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
Nov 21 #Javascript
js实现HashTable(哈希表)的实例分析
Nov 21 #Javascript
You might like
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
PHP时间戳使用实例代码
2008/06/07 PHP
php递归列出所有文件和目录的代码
2008/09/10 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
python框架flask表单实现详解
2019/11/04 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
2014年道德讲堂实施方案
2014/03/05 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
2015年统战工作总结
2015/05/19 职场文书
换届选举主持词
2015/07/03 职场文书
环保宣传语大全
2015/07/13 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL