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 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
Dec 19 Javascript
form表单action提交的js部分与html部分
Jan 07 Javascript
jQuery 处理页面的事件详解
Jan 20 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
JavaScript简单下拉菜单实例代码
Sep 07 Javascript
适用于javascript开发者的Processing.js入门教程
Feb 24 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
Aug 24 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
Nov 06 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调用Java对象的方法
2006/10/09 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
javascript引导程序
2008/10/26 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
详解Vite的新体验
2021/02/22 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
五年级科学教学反思
2014/02/05 职场文书
道路建设实施方案
2014/03/18 职场文书
房屋租赁协议书
2014/04/10 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
节约能源标语
2014/06/17 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫