1
lsk569937453 2023-08-18 08:36:22 +08:00
我理解的"导出"是指通过文件的方式下载到本地。后端将数据写入 inputstream 中,然后以"application/octet-stream"返回给前端就行了。
直接百度搜索"springboot+axios 下载进度" |
2
KOMA1NIUJUNSHENG 2023-08-18 09:05:34 +08:00
这不是百度都能搜到的答案吗
|
3
liuhailiang 2023-08-18 09:51:48 +08:00
三个接口
1 、创建导出任务接口:接口立即返回 jobid ,同时开启线程执行导出追加写入文件,线程内执行逻辑先计算总行数,按数量定期更新已导出行数以便能算出导出进度, 2 、查询导出进度接口:前端通过接口 1 得到 jobid 后,轮训此接口,内部查询 job 的导出进度(已导出行数/总行数) 3 、下载 job 文件接口:通过接口 2 轮训结果为完成时,通过此接口下载文件 大体逻辑如上,过程中增加一些安全性、健壮性校验,比如如果表数据会随时增加,那导出时的最大 id 要记录;比如同一人多次点击导出的重复性(进行中任务)校验;比如多人同时导出是否可共用同一个 job ,防止大量导出任务搞挂程序;再比如,2 和 3 和可合并成一个接口,2 为 100%时候,附带下载链接;在比如下载的文件增加一些截止时间什么的好让用户知道下载到的文件截止时间;再比如,提供增量下载巴拉巴拉的节约服务器开销 |
4
dode 2023-08-18 10:37:48 +08:00
jdbc 逐行处理,获取当前已经处理数量,
|