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

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

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

转载于:https://www.cnblogs.com/chen0427/p/8487612.html

【Flask】下载多个文件相关推荐

  1. python flask 大文件 下载_python flask 建站之文件上传下载(一)

    公众号: 数据乐趣 如有建议和问题,敬请留言. 上一篇简单讲了一下Flask建站的大概流程,本篇举个Flask实例进行说明. 建站简介 实例功能是实现文件的上传和下载. 开发软件采用Pycharm,p ...

  2. Flask入门之上传文件到服务器

    https://www.cnblogs.com/wongbingming/p/6802660.html flask 文件的上传下载和excel操作 Flask入门之上传文件到服务器 今天要做一个简单的 ...

  3. Python仓库管理系统源代码,库存管理系统源码,基于flask,内含数据库文件,已实现出入库、库存预警,库存搜索等功能

    Python仓库管理系统源代码,库存管理系统源码,基于flask,内含数据库文件,已实现出入库.库存预警,库存搜索等功能 已实现三大功能:库存管理(出库.入库.低库存预警.物品搜索),预算统计,出入库 ...

  4. python下载文件保存_python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  5. kali linux 下载百度云大文件

    参考资料:http://blog.csdn.net/a1eafall/article/details/51995293 百度云为了防止用户使用其他软件下载里面的文件(用其他软件下载速度很快),对其文件 ...

  6. python软件在下载库文件_python – 并行下载多个文件的库或工具

    我正在寻找一个python库或一个命令行工具来并行下载多个文件.我目前的解决方案是顺序下载文件缓慢.我知道你可以很容易地在python中编写一个半条线程的线程解决方案,但是在使用线程时总是遇到麻烦的问 ...

  7. 纯前端下载pdf链接文件,而不是打开预览的解决方案

    纯前端下载pdf链接文件,而不是打开预览的解决方案 参考文章: (1)纯前端下载pdf链接文件,而不是打开预览的解决方案 (2)https://www.cnblogs.com/jackson-yqj/ ...

  8. python3下载文件-python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  9. Mysql 使用下载的zip文件进行安装启动

    为什么80%的码农都做不了架构师?>>>    在很多情况下,例如windows系统下,并不想将mysql数据库以服务的形式安装,因为可能会用到多种版本的数据库,我们想下载多种版本数 ...

  10. 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 (转载)

    解决Ubuntu"下载额外数据文件失败 ttf-mscorefonts-installer"的问题 发表于 2017-09-15 | 更新于 2018-04-29 | 分类于 Li ...

最新文章

  1. jquery对事件的监听方法addEventListener()
  2. R语言笔记7:认识循环函数、lapply和sapply
  3. paxos整合mysql_微信开源PhxSQL:高可用、强一致的MySQL集群(转载)
  4. matlab 图像处理函数(第八章) 图像的增强
  5. 【Python】一文搞懂Pandas数据排序
  6. 命令行 笔记本键盘禁用_宏碁发布Enduro系列三防笔记本电脑和平板电脑
  7. 【Linux】一步一步学Linux——pgrep命令(123)
  8. 复制Excel分类汇总结果的三种方法
  9. java 圆类 圆锥类_以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone
  10. Python机器学习(基础篇---监督学习(k近邻))
  11. Unity 创建fnt字体
  12. javaWeb框架开发
  13. 国内机器人编程赛事大全介绍
  14. Js逆向实战之网易云音乐(手把手视频讲解)
  15. 如何批量将 PPT 幻灯片文档转换为 XPS 格式
  16. ActiveMQ--CVE-2015-5254
  17. 射手影音播放器android,射手影音播放器安卓版
  18. 基于vue的图片上传预览插件
  19. 手机客户端使用ConnectBot软件远程登录服务器
  20. C#winform TreeView编程

热门文章

  1. 掌握 Ajax,第 1 部分: Ajax 入门简介
  2. C++泛型算法的小总结
  3. C++数据结构与算法(九) 树,优先级队列,最大堆的实现
  4. MATLAB Simulink中自定义函数和switch case的用法
  5. 11-用两个栈实现一个队列
  6. 市场份额一般是多少_虹口区武进路疏通坐便器通一次收多少钱
  7. thymealf 高级用法_史上最详 Thymeleaf 使用教程
  8. 软件测试经典面试题(一)给你一个水杯如何测试
  9. Mina Protocol将主网候选版本发布时间延后一小时至3月17日8点
  10. Bots Inc宣布订购1000台比特币矿机,价值400万美元