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 操作单选框,复选框,下拉列表实现代码
Oct 27 Javascript
window.open的页面如何刷新(父页面)上层页面
Dec 28 Javascript
判断文件是否正在被使用的JS代码
Dec 21 Javascript
jquery+Jscex打造游戏力度条
Sep 12 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
简单的渐变轮播插件
Jan 12 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
Aug 16 Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
微信小程序生成二维码的示例代码
Mar 29 Javascript
js回文数的4种判断方法示例
Jun 04 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
Sep 23 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
Oct 26 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
第六节 访问属性和方法 [6]
2006/10/09 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Python读写压缩文件的方法
2020/07/30 Python
Django model class Meta原理解析
2020/11/14 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Why do we need Unit test
2013/01/03 面试题
《音乐之都维也纳》教学反思
2014/04/16 职场文书
城市创卫标语
2014/06/17 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
婚前协议书范本
2014/10/27 职场文书
同学聚会邀请函
2015/01/30 职场文书
党小组评议意见
2015/06/02 职场文书
高中班主任培训心得体会
2016/01/07 职场文书