0

0

HTML表单怎样显示上传进度_HTML表单显示上传进度流程【教程】

雪夜

雪夜

发布时间:2026-03-08 17:18:56

|

133人浏览过

|

来源于php中文网

原创

html表单原生不支持上传进度显示,必须用xmlhttprequest.upload.onprogress监听上传事件;fetch无法监听上传进度;需注意服务端配置、formdata构造、兼容性及ui更新节流等问题。

html表单怎样显示上传进度_html表单显示上传进度流程【教程】

HTML 表单本身不支持上传进度显示

原生 <form></form> 提交是整页跳转或刷新行为,没有内置的进度事件。所谓“表单显示上传进度”,实际必须绕开传统提交,改用 XMLHttpRequestfetch + FormData 手动发请求,并监听上传阶段的事件。

常见错误现象:onprogress 一直不触发、event.loaded 始终为 0、进度条卡在 0% 或直接跳到 100%。

  • 必须用 XMLHttpRequest.upload.onprogress,不是 XMLHttpRequest.onprogress(后者是下载事件)
  • fetch 不提供上传进度 API,无法直接监听;强行用 ReadableStream 分块上传会破坏服务端对 multipart/form-data 的解析
  • 服务端不能禁用或截断 Content-Length 头,否则浏览器无法计算总大小

用 XMLHttpRequest.upload.onprogress 获取实时进度

这是目前最稳定、兼容性最好(IE10+)、且能精确反映上传状态的方式。关键在于绑定事件的位置和时机。

使用场景:需要显示百分比、上传速度、剩余时间,或限制大文件上传时做中途取消。

立即学习前端免费学习笔记(深入)”;

佳蓝在线销售系统(创业版) 佳蓝在线销售
佳蓝在线销售系统(创业版) 佳蓝在线销售

1、对ASP内核代码进行DLL封装,从而大大提高了用户的访问速度和安全性;2、采用后台生成HTML网页的格式,使程序访问速度得到进一步的提升;3、用户可发展下级会员并在下级购买商品时获得差额利润;4、全新模板选择功能;5、后台增加磁盘绑定功能;6、后台增加库存查询功能;7、后台增加财务统计功能;8、后台面值类型批量设定;9、后台财务曲线报表显示;10、完善订单功能;11、对所有传输的字符串进行安全

下载
const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload');
xhr.upload.onprogress = function (e) {
  if (e.lengthComputable) {
    const percent = (e.loaded / e.total) * 100;
    console.log(`上传中:${Math.round(percent)}%`);
  }
};
xhr.send(formData);
  • e.lengthComputable 一定要判断,某些代理或服务端配置下该值为 false,此时 e.total 是 0
  • 不要在 xhr.onload 里读取 responseText 来判断成功——上传完成 ≠ 服务端处理完成,得等 xhr.status === 200
  • 如果后端用了 Nginx,默认 client_max_body_size 限制可能让大文件在到达应用前就被拦截,此时根本不会触发 onprogress

FormData 构建要避开常见陷阱

进度能跑起来,不代表数据一定能被后端正确接收。FormData 看似简单,但字段顺序、空值、Blob 类型都会影响 multipart 边界和解析结果。

参数差异:append()set() 行为不同;重复 key 会被合并还是覆盖,取决于后端框架(如 Express 的 multer 默认只取第一个)。

  • 文件字段名必须和服务端约定一致,比如后端 expect file,你传了 myFile 就收不到
  • 不要手动设置 Content-Type 请求头——XMLHttpRequest 会自动设为 multipart/form-data; boundary=xxx,设了反而会导致边界错乱
  • 如果同时传 JSON 字符串和文件,别把 JSON 序列化后 append('data', JSON.stringify(obj)),应改用纯字段拆解,或走双请求(先传元数据,再传文件)

移动端和 Safari 的兼容性坑

iOS Safari 对 XMLHttpRequest.upload 的支持基本没问题(iOS 10+),但实际表现常受制于系统级限制:比如后台上传被暂停、Wi-Fi 切换蜂窝网络时中断、甚至某些版本对 File 对象的 size 读取不准。

性能影响:频繁更新 UI(如每 50ms 改一次进度条)在低端 Android 机上可能造成卡顿,建议节流。

  • 不要依赖 File.size 作为 e.total 的校验值——Safari 在某些 FilePicker 场景下返回 0,但上传时 e.total 是正确的
  • 微信内嵌 WebView(X5 内核)对 onprogress 触发频率有压制,实测可能 3–5 秒才更新一次,需在 UI 上提示“上传中,请稍候”而非强求实时性
  • 如果用户点了「取消」,调用 xhr.abort() 后,部分安卓机型仍会继续上报少量 onprogress 事件,需在回调里加 if (xhr.readyState === 0) return 防止误更新

事情说清了就结束。进度条背后不是表单的事,是请求生命周期、浏览器实现细节和后端配合共同决定的。漏掉任意一环,UI 上看到的就只是假象。

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

521

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

609

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

672

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3615

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

53

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

71

2026.01.13

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

44

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

AngularJS教程
AngularJS教程

共24课时 | 4万人学习

CSS教程
CSS教程

共754课时 | 40.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号