以下是一个基本的拖拽上传文件的JavaScript代码示例:
const dropArea = document.getElementById('drop-area');
// 阻止浏览器默认行为
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false);
});
// 拖拽文件进入区域时高亮显示
['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false);
});
// 拖拽文件离开区域时取消高亮显示
['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false);
});
// 处理拖拽放下文件事件
dropArea.addEventListener('drop', handleDrop, false);
function preventDefaults (e) {
e.preventDefault();
e.stopPropagation();
}
function highlight(e) {
dropArea.classList.add('highlight');
}
function unhighlight(e) {
dropArea.classList.remove('highlight');
}
function handleDrop(e) {
const dt = e.dataTransfer;
const files = dt.files;
handleFiles(files);
}
function handleFiles(files) {
// 处理上传文件的逻辑
}
需要配合一些CSS样式来实现拖拽区域的样式和效果。