如何利用python web框架做文件流下载的实现示例


Posted in Python onJune 02, 2020

hello 大家好, 前不久公司里有个需求,把时序数据库中的日志下载到本地. 大家都知道. 数据库里的数据 都是存在数据库里的(废话). 想把他下载到客户的本地. 有的同学第一反应是: 只有文件才能下载. 所以大多数同学会想到先把数据从数据库中读出来,然后写入到服务器中的某个文件夹下生成文件, 然后再下载. 其实这是非常不效率的方法, 最简单的方法是,我们从数据库中读取到文件后, 直接以流的形式让用户去下载.

这里我拿python flask框架来做例子,其实非常简单,步骤一共有3个

1: 取出数据, 我们默认为json文件吧

2: 在response中加入指定的header

3: 将数据返回.

那么废话少说,我们直接上代码:

# coding:utf-8
import json
 
from flask import Flask, make_response 
app = Flask(__name__)
 
@app.route('/download', methods=["GET"])
def download():user = {'name': 'dewei', 'age': 33} 
 data = json.dumps(user)
 response = make_response(data)
 response.headers['content-type'] = 'application/octet-stream;charset=utf-8'
 response.headers['content-disposition'] = 'attachment;filename=user.json'
 return response
 
if __name__ == '__main__':
 app.run(host='0.0.0.0', port=5005, debug=True)

这是一个非常简单的demo.

flask的定义我们不去关心了. 这里最重要的是获取response, 并且在response的headers中,加入content-type 定义为octet-stream 流的操作. 另外一个key是 content-disposition ,这里主要定义文件的名称. 这两部完成之后,我们只需要return response即可, 重点就在这两个header上,然后传入数据信息(这里我们定义了一个json,大家也可以定义其他文件,比如excel,当然 excel请大家查询一下对应的content-type. 还是非常简单的, 这个方法对于任何web框架都是用, 比如 我们常用的 django, tornado web.py 都是一样, 只不过语法在不同的框架里,方法名和用法可能有简单区别,但换汤不换药,原理是一样的.

最后说一下用法,一般来说 下载的链接都是 get 所以前端只需要定义个 a标签 添加 download属性即可, demo如下:

<a href="xxxx/download" rel="external nofollow" download>文件下载</a>

到此这篇关于如何利用python web框架做文件流下载的实现示例的文章就介绍到这了,更多相关python 文件流下载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Python 相关文章推荐
python实现划词翻译
Apr 23 Python
python使用rabbitmq实现网络爬虫示例
Feb 20 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
python监控nginx端口和进程状态
Sep 06 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
python 如何用terminal输入参数
May 25 Python
详解Python+OpenCV进行基础的图像操作
Feb 15 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 #Python
Java多线程实现四种方式原理详解
Jun 02 #Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 #Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 #Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 #Python
Python几种常见算法汇总
Jun 02 #Python
opencv-python的RGB与BGR互转方式
Jun 02 #Python
You might like
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php自动加载代码实例详解
2021/02/26 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
Vue header组件开发详解
2018/01/26 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python 网络爬虫初级实现代码
2016/02/27 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
pandas中的series数据类型详解
2019/07/06 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
python实现IOU计算案例
2020/04/12 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Django实现内容缓存实例方法
2020/06/30 Python
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
优秀教师先进事迹
2014/01/22 职场文书
元旦趣味活动方案
2014/08/22 职场文书
学习考察心得体会
2014/09/04 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android