文件拖拽

作者: 六月太阳花 | 来源:发表于2016-12-29 22:37 被阅读36次

文件拖拽
ondragover 拖拽文件进入窗口 (不断执行)
ondragenter 拖拽文件进入窗口 (只执行一次)
ondragleave 拖拽文件离开窗口
ondrop 文件丢到指定区域
必须在ondragover事件中阻止默认事件return false;
文件信息
var oF=ev.dataTransfer.files[0];
oF.name 名字
oF.type 类型
oF.size 大小
oF.lastModifiedDate 修改时间

    1.创建一个读取文件对象
        var reader=new FileReader();
    2.读取方式
        文本方式
            reader.readAsText(oF);
        base64
            reader.readAsDataURL(oF);
    3.读取成功
        reader.onload=function (){
            reader.result;      //读取结果      
        };
    4.读取失败
        onerror
    5.读取完成
        onloadend
    6.开始读取
        onloadstart
    7.读取过程
        onprogress
            ev.loaded
            ev.total
    8.读取中断
        onabort
    9.强制中断
        reader.abort();
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>文件拖拽</title>
<style>
.box{ width:200px; height:200px; background:red; position:absolute; left:50%; top:50%; margin:-100px 0 0 -100px; display:none; text-align:center; line-height:200px; color:#fff; }
</style>
<script>
window.onload=function (){
    var oDiv=document.querySelector('.box');
    var oPic=document.getElementById('pic');
    var oM=document.getElementById('m');

    //进入页面
    var timer=null;
    document.ondragover=function (){
        oDiv.style.display='block'; 
        clearTimeout(timer);
        timer=setTimeout(function (){
            oDiv.style.display='none';
        },300); 
    };
    //文件进入元素
    oDiv.ondragenter=function (){
        oDiv.innerHTML='释放鼠标';
    };
    //文件离开元素
    oDiv.ondragleave=function (){
        oDiv.innerHTML='将文件拖到此区域';
    };
    //文件丢到div上
    oDiv.ondrop=function (ev){
        //获取文件信息
        var oF=ev.dataTransfer.files[0];
        //读取方式
        var reader=new FileReader(); 
        reader.onload=function (){
            //alert('读取成功'); 
            oPic.src=reader.result;
        }; 
        reader.error=function (){
            alert('读取失败');
        }; 
        reader.onloadend=function (){
            alert('读取完成');
        }; 
        reader.onloadstart=function (){
            alert('开始读取');
        }; 
        //正在读取
        reader.onprogress=function (ev){
            //当前读取多少        ev.loaded
            //总大小           ev.total
            var scale=ev.loaded/ev.total; 
            if(scale>0.5){
                reader.abort();     //强制中断
            } 
            oM.value=scale*100;
        }; 
        //读取中断
        reader.onabort=function (){
            alert('读取中断');
        };
        reader.readAsDataURL(oF);
        return false;
    };

    //阻止浏览器默认事件
    oDiv.ondragover=function (){
        return false;
    };
};
</script>
</head>
<body>
    <img src="" id="pic" width="100" height="100" alt="" />
    <div class="box">将文件拖到此区域</div>
    <meter id="m" max="100" value="0"></meter>
</body>
</html>

相关文章

  • 文件拖拽

    文件拖拽ondragover 拖拽文件进入窗口 (不断执行)ondragenter 拖拽文件进入窗口 ...

  • MacOS 开发(十六) : 文件拖拽

    文件拖拽的核心是拖拽目标视图 (DragDestinationView),此方法会检测目标是否可拖拽类型,拖拽文件...

  • Html5 + Css 3 文件拖拽上传功能

    拖拽上传文件功能 拖拽事件 拖拽元素ondrag 应用于拖拽元素,整个拖拽过程都会调用ondragstart应用...

  • 2019-03-15 文件拖拽移动

    期望效果:拖拽文件移动文件位置(相当于剪切),且拖拽过程中目标文件有背景样式。类似于windows的桌面拖拽 每个...

  • 原生拖拽,拖放事件(drag and drop)

    拖拽,拖放事件可以通过拖拽实现数据传递,达到良好的交互效果,如:从操作系统拖拽文件实现文件选择,拖拽实现元素布局的...

  • js:拖拽事件

    拖拽事件 ondragstart当拖拽元素被开始拖拽时,event:拖拽元素。[从操作系统向浏览器拖拽文件不会触发...

  • 文件拖拽

    var box = document.querySelector(".box"); //需要阻止的默认事件 //阻...

  • HTML5拖拽drag

    通过拖拽实现页面元素的位置改变 实现拖拽效果 源元素 - 要拖拽的文件 目标元素 - 要拖拽到哪里去 目前实现拖拽...

  • HTML5实现拖拽

    实现拖拽效果源元素 - 要拖拽的文件目标元素 - 要拖拽到哪里去 目前实现拖拽效果使用原生DOM就能实现 - 最麻...

  • Electron学习笔记 - 拖拽打开/显示文件内容

    这次我们来实时一个功能 - 拖拽打开/显示文件内容。例:在文件夹窗口将package.json文件拖拽至我们的应用...

网友评论

    本文标题:文件拖拽

    本文链接:https://www.haomeiwen.com/subject/xyipvttx.html