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弹出对话框返回值代码(asp.net后台)
Dec 28 Javascript
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
纯javascript移动优先的幻灯片效果
Nov 02 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
JS实现显示当前日期的实例代码
Jul 03 Javascript
Puppeteer 爬取动态生成的网页实战
Nov 14 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 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
用户的详细注册和判断
2006/10/09 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
Python unittest模块用法实例分析
2018/05/25 Python
Python操作mongodb的9个步骤
2018/06/04 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
python实现吃苹果小游戏
2020/03/21 Python
Django数据库操作之save与update的使用
2020/04/01 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
质量标语大全
2014/06/12 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书