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数据,并将文件保存在指定位置。