【Flask】下载多个文件
使用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】下载多个文件相关推荐
- python flask 大文件 下载_python flask 建站之文件上传下载(一)
公众号: 数据乐趣 如有建议和问题,敬请留言. 上一篇简单讲了一下Flask建站的大概流程,本篇举个Flask实例进行说明. 建站简介 实例功能是实现文件的上传和下载. 开发软件采用Pycharm,p ...
- Flask入门之上传文件到服务器
https://www.cnblogs.com/wongbingming/p/6802660.html flask 文件的上传下载和excel操作 Flask入门之上传文件到服务器 今天要做一个简单的 ...
- Python仓库管理系统源代码,库存管理系统源码,基于flask,内含数据库文件,已实现出入库、库存预警,库存搜索等功能
Python仓库管理系统源代码,库存管理系统源码,基于flask,内含数据库文件,已实现出入库.库存预警,库存搜索等功能 已实现三大功能:库存管理(出库.入库.低库存预警.物品搜索),预算统计,出入库 ...
- python下载文件保存_python 3.3 下载固定链接文件并保存的方法
python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...
- kali linux 下载百度云大文件
参考资料:http://blog.csdn.net/a1eafall/article/details/51995293 百度云为了防止用户使用其他软件下载里面的文件(用其他软件下载速度很快),对其文件 ...
- python软件在下载库文件_python – 并行下载多个文件的库或工具
我正在寻找一个python库或一个命令行工具来并行下载多个文件.我目前的解决方案是顺序下载文件缓慢.我知道你可以很容易地在python中编写一个半条线程的线程解决方案,但是在使用线程时总是遇到麻烦的问 ...
- 纯前端下载pdf链接文件,而不是打开预览的解决方案
纯前端下载pdf链接文件,而不是打开预览的解决方案 参考文章: (1)纯前端下载pdf链接文件,而不是打开预览的解决方案 (2)https://www.cnblogs.com/jackson-yqj/ ...
- python3下载文件-python 3.3 下载固定链接文件并保存的方法
python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...
- Mysql 使用下载的zip文件进行安装启动
为什么80%的码农都做不了架构师?>>> 在很多情况下,例如windows系统下,并不想将mysql数据库以服务的形式安装,因为可能会用到多种版本的数据库,我们想下载多种版本数 ...
- 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 (转载)
解决Ubuntu"下载额外数据文件失败 ttf-mscorefonts-installer"的问题 发表于 2017-09-15 | 更新于 2018-04-29 | 分类于 Li ...
最新文章
- jquery对事件的监听方法addEventListener()
- R语言笔记7:认识循环函数、lapply和sapply
- paxos整合mysql_微信开源PhxSQL:高可用、强一致的MySQL集群(转载)
- matlab 图像处理函数(第八章) 图像的增强
- 【Python】一文搞懂Pandas数据排序
- 命令行 笔记本键盘禁用_宏碁发布Enduro系列三防笔记本电脑和平板电脑
- 【Linux】一步一步学Linux——pgrep命令(123)
- 复制Excel分类汇总结果的三种方法
- java 圆类 圆锥类_以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone
- Python机器学习(基础篇---监督学习(k近邻))
- Unity 创建fnt字体
- javaWeb框架开发
- 国内机器人编程赛事大全介绍
- Js逆向实战之网易云音乐(手把手视频讲解)
- 如何批量将 PPT 幻灯片文档转换为 XPS 格式
- ActiveMQ--CVE-2015-5254
- 射手影音播放器android,射手影音播放器安卓版
- 基于vue的图片上传预览插件
- 手机客户端使用ConnectBot软件远程登录服务器
- C#winform TreeView编程
热门文章
- 掌握 Ajax,第 1 部分: Ajax 入门简介
- C++泛型算法的小总结
- C++数据结构与算法(九) 树,优先级队列,最大堆的实现
- MATLAB Simulink中自定义函数和switch case的用法
- 11-用两个栈实现一个队列
- 市场份额一般是多少_虹口区武进路疏通坐便器通一次收多少钱
- thymealf 高级用法_史上最详 Thymeleaf 使用教程
- 软件测试经典面试题(一)给你一个水杯如何测试
- Mina Protocol将主网候选版本发布时间延后一小时至3月17日8点
- Bots Inc宣布订购1000台比特币矿机,价值400万美元