html5实现拖拽文件上传

html文件


[html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> 
<head> 
<title>HTML5拖拽上传</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="description" content="" /> 
<meta name="keywords" content="" /> 
<style type="text/css"> 
 
#dropzone{ 
width:300px; 
height:300px; 
border:2px dashed gray; 

 
#dropzone.over { 
border:2px dashed orange; 

 
</style> 
</head> 
    <body> 
        <h1>拖拽上传</h1> 
        <div id="dropzone"></div> 
    </body> 
 
    <script type="text/javascript"> 
 
    // 负责ajax发送数据 
    function up(fd) { 
        var xhr = new XMLHttpRequest(); 
        xhr.open('POST','upfile.php',true); // 异步传输 
 
        // xhr.upload 这是html5新增的api,储存了上传过程中的信息 
        xhr.upload.onprogress = function (ev) { 
            var percent = 0; 
            if(ev.lengthComputable) { 
                percent = 100 * ev.loaded/ev.total; 
                //document.getElementById('progress').innerHTML = percent; 
                document.getElementById('bar').style.width = percent + '%'; 
            } 
        } 
 
        xhr.send(fd); 
    } 
 
 
var dz = document.getElementById('dropzone'); 
dz.ondragover = function (ev) { 
    this.className = 'over'; 
    return false; 

 
dz.ondragleave = function (){ 
    this.className = ''; 

 
dz.ondrop = function(ev) { 
    //console.log(ev.dataTransfer.files[0]); 
 
    var fd = new FormData(); 
    fd.append('pic',ev.dataTransfer.files[0]); 
 
    up(fd); 
 
    return false; // 拦截拖放的正常行为 

 
</script> 
</html> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>HTML5拖拽上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<style type="text/css">

#dropzone{
width:300px;
height:300px;
border:2px dashed gray;
}

#dropzone.over {
border:2px dashed orange;
}

</style>
</head>
    <body>
        <h1>拖拽上传</h1>
        <div id="dropzone"></div>
    </body>

    <script type="text/javascript">

    // 负责ajax发送数据
    function up(fd) {
        var xhr = new XMLHttpRequest();
        xhr.open('POST','upfile.php',true); // 异步传输

        // xhr.upload 这是html5新增的api,储存了上传过程中的信息
        xhr.upload.onprogress = function (ev) {
            var percent = 0;
            if(ev.lengthComputable) {
                percent = 100 * ev.loaded/ev.total;
                //document.getElementById('progress').innerHTML = percent;
                document.getElementById('bar').style.width = percent + '%';
            }
        }

        xhr.send(fd);
    }


var dz = document.getElementById('dropzone');
dz.ondragover = function (ev) {
    this.className = 'over';
    return false;
}

dz.ondragleave = function (){
    this.className = '';
}

dz.ondrop = function(ev) {
    //console.log(ev.dataTransfer.files[0]);

    var fd = new FormData();
    fd.append('pic',ev.dataTransfer.files[0]);

    up(fd);

    return false; // 拦截拖放的正常行为
}

</script>
</html>
upfile.php


[php]
echo move_uploaded_file($_FILES['pic']['tmp_name'],'./upload/' . $_FILES['pic']['name']) ? 'OK':'fail'; 

echo move_uploaded_file($_FILES['pic']['tmp_name'],'./upload/' . $_FILES['pic']['name']) ? 'OK':'fail';
如图:

 \
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5实现拖拽批量上传文件的代码如下: ```html <!DOCTYPE html> <html> <head> <title>Drag and Drop File Upload</title> <style> #drop_area { width: 200px; height: 200px; border: 2px dashed gray; text-align: center; font-size: 20px; margin: 20px auto; padding: 10px; } </style> </head> <body> <div id="drop_area"> Drag and Drop Files Here </div> <script> var dropArea = document.getElementById('drop_area'); // Prevent default drag behaviors ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { dropArea.addEventListener(eventName, preventDefaults, false); document.body.addEventListener(eventName, preventDefaults, false); }); // Highlight drop area when dragging files over it ['dragenter', 'dragover'].forEach(eventName => { dropArea.addEventListener(eventName, highlight, false); }); // Remove highlight when dragging files out of drop area ['dragleave', 'drop'].forEach(eventName => { dropArea.addEventListener(eventName, unhighlight, false); }); // Handle dropped files dropArea.addEventListener('drop', handleDrop, false); function preventDefaults(e) { e.preventDefault(); e.stopPropagation(); } function highlight() { dropArea.classList.add('highlight'); } function unhighlight() { dropArea.classList.remove('highlight'); } function handleDrop(e) { var dt = e.dataTransfer; var files = dt.files; handleFiles(files); } function handleFiles(files) { files = [...files]; files.forEach(uploadFile); } function uploadFile(file) { var url = 'upload.php'; var formData = new FormData(); formData.append('file', file); fetch(url, { method: 'POST', body: formData }) .then(response => { console.log(response.text()); }) .catch(error => { console.error(error); }); } </script> </body> </html> ``` 其中,`upload.php` 是接收文件并处理的 PHP 文件。下面是一个简单的上传 PHP 文件的示例: ```php <?php if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { $uploadPath = './uploads/' . basename($_FILES['file']['name']); move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath); echo 'File uploaded successfully!'; } else { echo 'Error uploading file.'; } ?> ``` 上述代码将上传的文件保存到 `uploads` 文件夹中,并返回上传成功或失败的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值