Layui如何监听文件上传的进度百分比

落枫君_9571

落枫君_9571

2026-06-30

541人浏览

原创

progress回调不触发需同时满足四条件:layui≥2.5.5、auto:false、before中return false、url正确且后端支持multipart/form-data;多文件上传时lay-filter必须唯一,否则进度覆盖;n===100仅表示请求发完,非上传成功。

progress回调不触发?先确认四个硬性条件

最常见的情况是写了progress却完全没输出,根本原因是layui压根没进入进度监听流程。必须同时满足以下四点,progress才会被调用:

  • layui 版本 ≥ 2.5.5(查 layui.version,旧版无此回调)
  • auto: false(默认为 true,此时 progress 被跳过)
  • before 回调中 显式 return false(仅写 before 不够,漏掉这句就自动发请求)
  • url 配置正确,且后端接收方式支持 multipart/form-data(传 base64 或普通 json 会导致浏览器无法上报已发送字节数)

多文件上传时进度条互相覆盖?lay-filter 必须唯一

所有文件共用同一个 lay-filter="demo",结果就是后一个文件的进度直接刷掉前一个——这不是 bug,而是 element.progress() 的匹配逻辑决定的。

  • 每个文件生成独立标识,例如 "progress-" + index
  • HTML 中动态插入带不同 lay-filter 的进度条:<div class="layui-progress" lay-filter="progress-0"></div>
  • progress 回调里调用 element.progress("progress-" + index, n + "%")
  • 别忘了在 done 或 error 里手动设为 "100%",否则可能卡在 99%

n === 100 并不等于上传成功

progress 里的 n 是浏览器发出请求体的完成度,不是服务端处理结果。常见错误是在 progress 里判断 n === 100 就隐藏 loading 或启用按钮。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • n === 100 只表示“发完了”,done 才代表“服务器返回了成功响应”
  • 大文件场景下,progress 到 100% 后常要等几秒才进 done(服务端校验、写磁盘、网络延迟)
  • 建议加中间态提示,比如“正在保存…”而非立刻切换 UI 状态
  • 若进度卡在 99% 不动,大概率是服务端配置问题(如 Nginx client_max_body_size、PHP upload_max_filesize 限制)

IE9 及以下不支持,且服务端限制比前端代码更关键

进度事件依赖 XMLHttpRequest.upload.onprogress,IE10+ 才有,IE9 及以下浏览器压根不会触发 progress 回调。

  • 前端代码再完美,服务端上传限制没调大,照样卡住:Nginx 默认 client_max_body_size 1m,PHP 默认 upload_max_filesize 2M
  • 这些限制导致连接提前关闭,前端看到进度停在某个值、无 error、也收不到 done
  • 排查顺序应是:先确认服务端日志是否有 413 错误,再查 Nginx/PHP 配置,最后看前端逻辑

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

相关标签:

layui

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

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2580

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

340

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2413

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1141

6

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3163

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

834

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6286

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5330

6

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

2026.05.08

441

31

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.7万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 10.9万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习