美文网首页
Html5 + Css 3 文件拖拽上传功能

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

作者: 昊啊昊儿哟 | 来源:发表于2018-07-28 10:38 被阅读13次

拖拽上传文件功能

拖拽事件

  • 拖拽元素
    • ondrag 应用于拖拽元素,整个拖拽过程都会调用
    • ondragstart应用于拖拽元素,当拖拽开始时调用
    • ondragleave应用于拖拽元素,当鼠标离开拖拽元素时调用
    • ondragend应用于拖拽元素,当拖拽结束时调用
  • 目标元素
    • ondragenter应用于目标元素,当拖拽元素进入时调用
    • ondragover应用于目标元素,当停留在目标元素上时调用
    • ondrop应用于目标元素,当在目标元素上松开鼠标时调用
    • ondragleave应用于目标元素,当鼠标离开目标元素时调用

实例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 100px;
            height: 100px;
            background: red;
        }
        .box2{
            width: 200px;
            height: 200px;
            background: green;
            position: absolute;
            left: 300px;
            top: 300px;
        }
    </style>
</head>
<body>
<!-- draggable="true" 允许不能拖拽的元素可以拖拽-->
<!-- 发现:拖拽的过程当中  禁止 符号  浏览器默认不允许你拖拽的元素放下-->
<div class="box1" draggable="true">你好</div>
<div class="box2"></div>
<script>
    var div = document.querySelector('.box1');
    var div2 = document.querySelector('.box2');
    /*当前元素拖拽相关事件*/
    div.addEventListener('drag',function (ev) {
        //console.log('当前元素:拖拽中...');
    });
    div.addEventListener('dragstart',function (ev) {
        //console.log('当前元素:拖拽开始');
    });
    div.addEventListener('dragend',function (ev) {
        //console.log('当前元素:拖拽结束');
    });
    div.addEventListener('dragleave',function (ev) {
        //console.log('当前元素:拖拽离开');
    });
    /*目标元素拖拽相关事件*/
    div2.addEventListener('dragenter',function (ev) {
        //console.log('目标元素:进入目标元素')
        ev.preventDefault();
    });
    div2.addEventListener('dragleave',function (ev) {
        //console.log('目标元素:离开目标元素')
    });
    div2.addEventListener('dragover',function (ev) {
        //console.log('目标元素:目标元素移动')
        ev.preventDefault();
    });
    div2.addEventListener('drop',function (ev) {
        /*阻止浏览器默认行为*/
        ev.preventDefault();
        console.log('目标元素:松手投入')
    });
</script>
</body>
</html>

上传代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
            border: 1px dashed #ccc;
            line-height: 200px;
            text-align: center;
            color: #ccc;
        }
    </style>
</head>
<body>
<div class="box">拖放图片到该区域</div>
<script>
    var box = document.querySelector('.box');
    box.addEventListener('dragenter', function (e) {
        /*禁用浏览器默认预览文件或下载文件操作*/
        e.preventDefault();
    });
    box.addEventListener('dragover', function (e) {
        /*禁用浏览器默认预览文件或下载文件操作*/
        e.preventDefault();
    });
    box.addEventListener('drop', function (e) {
        e.preventDefault();
        /*第一个文件数据*/
        var file = e.dataTransfer.files[0];
        //console.log(file);
        /*把数据设置到表单数据中*/
        var formData = new FormData();
        formData.append('dragImage', file);
        /*通过ajax异步提交*/
        var xhr = new XMLHttpRequest();
        xhr.open('post','upload.php');
        xhr.send(formData);
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200){
                /*上传成功*/
                console.log('ok');
                var img = new Image();
                img.src = xhr.responseText;
                document.querySelector('body').appendChild(img);
            }
        }
    });
</script>
</body>
</html>

相关文章

网友评论

      本文标题:Html5 + Css 3 文件拖拽上传功能

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