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 相关文章推荐
jQuery的$.proxy()应用示例介绍
Apr 03 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
Mar 12 Javascript
Windows系统下Node.js的简单入门教程
Jun 23 Javascript
简单几步实现返回顶部效果
Dec 05 Javascript
Javascript for in的缺陷总结
Feb 03 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
Aug 04 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
Apr 17 Javascript
vue 点击按钮实现动态挂载子组件的方法
Sep 07 Javascript
React降级配置及Ant Design配置详解
Dec 27 Javascript
详解vue或uni-app的跨域问题解决方案
Feb 21 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
让PHP支持断点续传的源码
2010/05/16 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
php中大括号作用介绍
2012/03/22 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
python中enumerate函数用法实例分析
2015/05/20 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
Python中一些深不见底的“坑”
2019/06/12 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
三年级科学教学反思
2014/01/29 职场文书
中学生班主任评语
2014/01/30 职场文书
离婚协议书范本样本
2014/08/19 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
通知范文怎么写
2015/04/16 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP
win10清理dns缓存
2022/04/19 数码科技