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 相关文章推荐
图片之间的切换
Jun 26 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
js动态创建表格,删除行列的小例子
Jul 20 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
Feb 06 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
JS对象是否拥有某属性如何判断
Feb 03 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
Jan 10 Javascript
element中的$confirm的使用
Apr 26 Javascript
js之ajax文件上传
May 13 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安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
JavaScript游戏之优化篇
2010/11/08 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
javascript的push使用指南
2014/12/05 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
详解vue路由
2020/08/05 Javascript
跟老齐学Python之数据类型总结
2014/09/24 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python docx库用法示例分析
2019/02/16 Python
pymysql模块的操作实例
2019/12/17 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
Python运算符+与+=的方法实例
2021/02/18 Python
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
骨干教师培训制度
2014/01/13 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
感谢信格式范文
2015/01/22 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript