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解析HTML、JSON和XML实例详解
Mar 29 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
微信jssdk用法汇总
Jul 16 Javascript
一次围绕setTimeout的前端面试经验分享
Jun 15 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
Dec 28 Javascript
cocos2dx+lua实现橡皮擦功能
Dec 20 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
Jul 06 Javascript
浅谈Layui的eleTree树式选择器使用方法
Sep 25 Javascript
JS实现普通轮播图特效
Jan 01 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
Vite + React从零开始搭建一个开源组件库
Jun 25 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP5中虚函数的实现方法分享
2011/04/20 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
python 排序算法总结及实例详解
2016/09/28 Python
python取均匀不重复的随机数方式
2019/11/27 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
职工运动会邀请函
2014/02/02 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
大学生创业项目方案
2014/03/08 职场文书
2014年班干部工作总结
2014/11/25 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL