html 如何拖拽上传多个文件并回显
时间: 2024-03-05 19:53:31 浏览: 102
html5拖拽上传文件
4星 · 用户满意度95%
实现拖拽上传多个文件并回显,需要结合 HTML5 的拖拽事件和 XMLHttpRequest 对象来实现。
HTML:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>拖拽上传文件</title>
</head>
<body>
<div id="upload-box" style="width: 300px; height: 300px; border: 1px solid #ccc;">将文件拖到此处上传</div>
<div id="file-list"></div>
<script src="upload.js"></script>
</body>
</html>
```
JavaScript:
```javascript
var uploadBox = document.getElementById('upload-box');
var fileList = document.getElementById('file-list');
// 拖拽事件处理函数
function handleDragOver(event) {
event.stopPropagation();
event.preventDefault();
uploadBox.style.border = '2px dashed #000';
}
function handleDragLeave(event) {
event.stopPropagation();
event.preventDefault();
uploadBox.style.border = '1px solid #ccc';
}
function handleDrop(event) {
event.stopPropagation();
event.preventDefault();
uploadBox.style.border = '1px solid #ccc';
var files = event.dataTransfer.files;
for (var i = 0; i < files.length; i++) {
var file = files[i];
// 显示文件列表
var li = document.createElement('li');
li.innerHTML = file.name;
fileList.appendChild(li);
// 上传文件
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php', true);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
}
var formData = new FormData();
formData.append('file', file);
xhr.send(formData);
}
}
// 绑定拖拽事件
uploadBox.addEventListener('dragover', handleDragOver, false);
uploadBox.addEventListener('dragleave', handleDragLeave, false);
uploadBox.addEventListener('drop', handleDrop, false);
```
在上面的代码中,`uploadBox` 表示接收拖拽上传的区域,`fileList` 表示上传文件的列表。`handleDragOver`、`handleDragLeave` 和 `handleDrop` 分别为拖拽事件的处理函数,`handleDrop` 中使用了 `XMLHttpRequest` 对象向服务器上传文件,并将上传成功的文件名回显到控制台中。需要注意的是,因为上传文件使用了 `XMLHttpRequest` 对象,所以需要使用服务器端代码来进行处理,这里使用了 `upload.php` 来处理上传文件。
阅读全文