1. 监听拖放区域的dragover事件,阻止默认行为并添加样式。
2. 监听拖放区域的drop事件,阻止默认行为、移除样式并获取拖放的文件。
3. 创建FormData对象,并将获取到的文件添加到FormData中。
4. 创建XMLHttpRequest对象,设置onreadystatechange事件处理函数。
5. 发送FormData数据到后台接口。
const dropArea = document.querySelector('#dropArea');
dropArea.addEventListener('dragover', (e) => {
e.preventDefault();
dropArea.classList.add('dragover');
});
dropArea.addEventListener('dragleave', () => {
dropArea.classList.remove('dragover');
});
dropArea.addEventListener('drop', (e) => {
e.preventDefault();
dropArea.classList.remove('dragover');
const files = e.dataTransfer.files;
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
formData.append('file', files[i]);
}
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log('上传成功');
}
};
xhr.open('POST', '后台接口地址');
xhr.send(formData);
});
需要注意的是,后台接口需要能够处理FormData数据,并将文件保存在指定位置。