我是靠谱客的博主 彩色豌豆,这篇文章主要介绍flask BytesIO() 多个文件打包下载 zipfile,现在分享给大家,希望可以做个参考。

flask BytesIO() 多个文件打包下载 zipfile

使用zipfile模块可以将多个文件打包成zip文件进行下载,但是常规的操作方式会在服务器磁盘上生成一个zip文件占用磁盘空间。

后引入BytesIO将文件写入到内存中然后下载:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def dl_plan(pid): """ 下载测试计划关联的测试文件,分单个和多个文件情况(多个文件打包成zip下载)。 1. 计划只有一个文件则直接下载.xlsx文件 2. 计划有多个文件,则打包成zip通过BytesIO直接写入到内存中,不在本地生成.zip文件。 :param pid :return: """ dirpath = Config.FILE_UPLOAD_DIR tp = TestPlan.objects.get_or_404(id=pid) fp_test_files = tp.test_files file_list = fp_test_files.split(",") dl_name = '{}.zip'.format(tp.planname) if len(file_list) == 1: return send_from_directory(dirpath, fp_test_files, as_attachment=True) else: memory_file = BytesIO() with zipfile.ZipFile(memory_file, "w", zipfile.ZIP_DEFLATED) as zf: for _file in file_list: with open(os.path.join(dirpath, _file), 'rb') as fp: zf.writestr(_file, fp.read()) memory_file.seek(0) return send_file(memory_file, attachment_filename=dl_name, as_attachment=True)

大体的代码就是这些

posted on 2018-07-23 18:26 多一点 阅读(...) 评论(...) 编辑 收藏

最后

以上就是彩色豌豆最近收集整理的关于flask BytesIO() 多个文件打包下载 zipfile的全部内容,更多相关flask内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部