浏览器批量下载打包成ZIP时,前端该如何优化下载显示?
浏览器批量下载打包成ZIP文件时,目前能想到的2种方案都无法令人满意,有没有大神提供一种比较友好的下载方案?方案1、后端直接持续输出文件流,但是无法提供Response Header里的Content-Length属性的值,导致浏览器不能显示下载进度方案2、后端先把各种文件打包成ZIP包保存到服务器上然后输出ZIP的文件流到前端,这种方式因为ZIP文件已经在服务器上了文件大小可以确定所以可以返回Response Header里的Content-Length属性的值,浏览器可以看到下载进度,但是在等待后端将文件打包成ZIP包的过程中,浏览器是一直在转圈的,并不会下载文件,知道后端打包好ZIP包输出文件流的时候才会开始下载文件
后端打包好之后输出文件流才开始下载
回复
1个回答

test
2024-07-11
恰巧最近也刚做过这个需求,实现思路为:浏览器发出下载请求,服务器开始打包,打包时间超过2S,直接响应给前端:文件正在打包,打包完成后自动下载,此时前端可以先干别的事,等待服务器打包完成后使用mqtt将打包后的文件地址发送给前端,前端收到消息根据地址进行下载,并显示进度.
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容