我的文件系统设计如下:
文件具有 path 属性;
文件夹的 path 为 null ;两者都有 parentId 。
我想到的方法是:把服务器的文件先组成一颗文件树,然后使用 filepath.walk 遍历打包成 zip,之后把 zip 压缩包下载。 但是这种方法存在两个问题:
- 频繁 io 操作,成本过重。
- 不清楚何时是删除生成的临时文件的最佳时机。
求教更高效的批量下载实现方式,谢谢!
我的文件系统设计如下:
文件具有 path 属性;
文件夹的 path 为 null ;两者都有 parentId 。
我想到的方法是:把服务器的文件先组成一颗文件树,然后使用 filepath.walk 遍历打包成 zip,之后把 zip 压缩包下载。 但是这种方法存在两个问题:
求教更高效的批量下载实现方式,谢谢!
1
ebingtel Nov 9, 2020
python 里面有 streamzip 模块, 本质: 并不需要把所有的文件都压入到 zip 之后,再返回,这样太浪费时间了; 边压边返回……
|
2
Evrins Nov 9, 2020 via iPhone 边遍历边打包可以用这个库 https://github.com/mholt/archiver
直接流式写入到 Http response 里面 |
3
huayumo Nov 9, 2020
可以看看七牛的上传下载工具,感觉效率挺高的
|