const fileInput = document.querySelector('input[type="file"]'); const progressBar = document.querySelector('.progress-bar'); fileInput.addEventListener('change',() => { const file = fileInput.files[0]; const xhr = new XMLHttpRequest(); xhr.open('POST','/upload',true); xhr.upload.addEventListener('progress',(event) => { const percent = Math.round((event.loaded / event.total) * 100); progressBar.style.width = percent + '%'; progressBar.textContent = percent + '%'; }); xhr.onreadystatechange = function () { if (xhr.readyState === xhr.DONE) { if (xhr.status === 200) { progressBar.style.backgroundColor = 'green'; progressBar.textContent = '上传成功!'; } else { progressBar.style.backgroundColor = 'red'; progressBar.textContent = '上传失败!'; } } }; const formData = new FormData(); formData.append('file',file); xhr.send(formData); });在上面的代码中,我们首先通过`querySelector`获取到文件输入框和进度条元素。然后,我们为文件输入框的`change`事件添加监听器,当文件选择发生改变时,触发上传操作。 我们创建一个`XMLHttpRequest`对象,并使用`open`方法指定上传的URL和请求方法。然后,我们通过`addEventListener`为上传过程中的`progress`事件添加监听器,这样我们就能够实时获取上传进度,并将进度更新到进度条上。 在`XMLHttpRequest`对象的`onreadystatechange`回调函数中,我们可以监听上传完成的状态。如果上传成功(状态码为200),我们将进度条的背景颜色设为绿色,并将文字内容设为"上传成功!"。如果上传失败,我们将背景颜色设为红色,并将文字内容设为"上传失败!"。 最后,我们创建一个`FormData`对象,将选择的文件添加到该对象中,然后使用`send`方法发送上传请求。 通过以上的代码,我们成功实现了使用AJAX上传文件并实时展示上传进度的功能。用户在上传的过程中可以看到进度条的变化,比等待整个文件上传完成要直观和友好。同时,用户还可以进行其他操作,无需等待上传的完成,提高了整体的用户体验。 综上所述,AJAX上传文件并实时展示上传进度是一项非常实用的技术。它能够提高用户体验,让用户在上传大文件时不再感到无聊和烦躁。通过上述示例代码,我们可以轻松地实现这一功能,并应用到各种Web开发项目中。希望本文对你了解和应用AJAX上传文件的进度有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。