html如何显示文件上传进度

发布时间:2022-03-14 14:28:10 作者:小新
来源:亿速云 阅读:437
# HTML如何显示文件上传进度

## 前言
在现代Web应用中,文件上传功能十分常见。但大文件上传时若没有进度提示,用户体验会大打折扣。本文将介绍如何使用HTML5和JavaScript实现文件上传进度显示。

## 核心API:XMLHttpRequest与FormData

```html
<input type="file" id="fileInput">
<button onclick="uploadFile()">上传</button>
<div id="progressBar" style="width:100%;height:20px;background:#eee"></div>
<div id="status"></div>

<script>
function uploadFile() {
  const fileInput = document.getElementById('fileInput');
  const file = fileInput.files[0];
  const formData = new FormData();
  formData.append('file', file);

  const xhr = new XMLHttpRequest();
  
  // 进度事件监听
  xhr.upload.onprogress = function(e) {
    if (e.lengthComputable) {
      const percent = (e.loaded / e.total * 100).toFixed(2);
      document.getElementById('progressBar').style.width = percent + '%';
      document.getElementById('status').innerHTML = percent + '% 已上传';
    }
  };

  xhr.open('POST', '/upload', true);
  xhr.send(formData);
}
</script>

关键实现步骤

  1. 获取文件对象:通过<input type="file">获取用户选择的文件
  2. 创建FormData对象:用于包装要上传的文件数据
  3. XMLHttpRequest配置
    • 使用xhr.upload.onprogress事件监听上传进度
    • 通过e.loadede.total计算进度百分比
  4. UI更新:将计算出的百分比实时更新到页面元素

进阶方案:Fetch API + 进度显示

async function uploadWithProgress(file) {
  const response = await fetch('/upload', {
    method: 'POST',
    body: file,
    headers: { 'Content-Type': file.type }
  });

  const reader = response.body.getReader();
  let received = 0;
  
  while(true) {
    const {done, value} = await reader.read();
    if(done) break;
    received += value.length;
    console.log(`Received ${received} bytes`);
  }
}

注意事项

  1. 跨域请求需要服务器配置CORS
  2. 大文件建议分片上传
  3. 移动端需考虑网络不稳定的情况
  4. 可添加取消上传功能

可视化增强建议

结语

通过合理利用现代浏览器API,开发者可以轻松实现专业的文件上传进度显示功能,显著提升用户体验。实际开发中可根据需求选择XMLHttpRequest或Fetch API方案。 “`

(全文约560字)

推荐阅读:
  1. Layui多文件上传进度条
  2. Python如何实现进度条实时显示处理进度

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

html

上一篇:html中如何验证文件大小

下一篇:html怎么实现目录上传

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》