JS实现可视化文件上传


Posted in Javascript onSeptember 08, 2018

本文实例为大家分享了JS可视化文件上传的具体代码,供大家参考,具体内容如下

测试-Style

<style type="text/css">
    .imgbox,.imgbox1
    {
      position: relative;
      width: 200px;
      height: 180px;
      border: 1px solid #ddd;
      overflow: hidden;
    }
 
    .imgnum{
      left: 0px;
      top: 0px;
      margin: 0px;
      padding: 0px;
    }
    .imgnum input,.imgnum1 input {
      position: absolute;
      width: 200px;
      height: 180px;
      opacity: 0;
    }
    .imgnum img,.imgnum1 img {
      width: 100%;
      height: 100%;
    }
    .close,
    .close1 {
      color: red;
      position: absolute;
      right: 10px;
      top: 0;
      display: none;
    }
</style>

测试--HTML

<div id="img">
 
 <div class="imgbox">
 <div class="imgnum">
  <input type="file" class="filepath" />
  <span class="close">X</span>
  <img src="btn.png" class="img1" />
  <img src="" class="img2" />
 </div>
 </div>
 
</div>

JS: 需要引入jquery

<script type="text/javascript">
  $(function() {
    $(".filepath").on("change",function() {
      var srcs = getObjectURL(this.files[0]);  //获取路径
      $(this).nextAll(".img1").hide();     //this指的是input
      $(this).nextAll(".img2").show();     //fireBUg查看第二次换图片不起做用
      $(this).nextAll('.close').show();     //this指的是input
      $(this).nextAll(".img2").attr("src",srcs);  //this指的是input
      $(this).val('');               //必须制空
      $(".close").on("click",function() {
        $(this).hide();             //this指的是span
        $(this).nextAll(".img2").hide();
        $(this).nextAll(".img1").show();
      })
    })
  })
 
 
 
//关键代码:getObjectURL return url
  function getObjectURL(file) {
    var url = null;
    if (window.createObjectURL != undefined) {
      url = window.createObjectURL(file)
    } else if (window.URL != undefined) {
      url = window.URL.createObjectURL(file)
    } else if (window.webkitURL != undefined) {
      url = window.webkitURL.createObjectURL(file)
    }
    return url
  };
 

//modify img
  $(function() {
    $("#img").on("change",".filepath1",function() {
      //alert($('.imgbox1').length);
      var srcs = getObjectURL(this.files[0]);  //获取路径
      alert(srcs);
      //this指的是input
      /* $(this).nextAll(".img22").attr("src",srcs);  //this指的是input
       $(this).nextAll(".img22").show(); //fireBUg查看第二次换图片不起做用*/
      var htmlImg='<div class="imgbox1">'+
          '<div class="imgnum1">'+
          '<input type="file" class="filepath1" />'+
          '<span class="close1">X</span>'+
          '<img src="btn.png" class="img11" />'+
          '<img src="'+srcs+'" class="img22" />'+
          '</div>'+
          '</div>';
 
      $(this).parent().parent().before(htmlImg);
      $(this).val('');            //必须制空
      $(this).parent().parent().prev().find(".img11").hide();  //this指的是input
      $(this).parent().parent().prev().find('.close1').show();
 
      $(".close1").on("click",function() {
        $(this).hide();          //this指的是span
        $(this).nextAll(".img22").hide();
        $(this).nextAll(".img11").show();
        if($('.imgbox1').length>1){
          $(this).parent().parent().remove();
        }
 
      })
    })
  })
 
</script>

注:低版本IE不支持可视化

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 浮动层菜单收藏
Jan 16 Javascript
jquery 插件学习(五)
Aug 06 Javascript
js如何判断不同系统的浏览器类型
Oct 28 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
初探JavaScript 面向对象(推荐)
Sep 03 Javascript
JavaScript分步实现一个出生日期的正则表达式
Mar 22 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
JavaScript组合设计模式--改进引入案例分析
May 23 Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 #Javascript
vue-router的HTML5 History 模式设置
Sep 08 #Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 #Javascript
react 父子组件之间通讯props
Sep 08 #Javascript
js代码规范之Eslint安装与配置详解
Sep 08 #Javascript
vue弹窗插件实战代码
Sep 08 #Javascript
浅谈从React渲染流程分析Diff算法
Sep 08 #Javascript
You might like
使用apache模块rewrite_module (转)
2007/02/14 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
利用js对象弹出一个层
2008/03/26 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
Python中多线程的创建及基本调用方法
2016/07/08 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
爱心捐助倡议书
2014/05/19 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS