如何利用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获取远程图片大小和尺寸的方法
Mar 26 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
Apr 01 Python
老生常谈Python进阶之装饰器
May 11 Python
python编程线性回归代码示例
Dec 07 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
python如何爬取个性签名
Jun 19 Python
python 提取文件指定列的方法示例
Aug 07 Python
python字典的遍历3种方法详解
Aug 10 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 Python
Python常遇到的错误和异常
Nov 02 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
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
python time()的实例用法
2020/11/03 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
优秀员工获奖感言
2014/03/01 职场文书
小学生综合素质评语
2014/04/23 职场文书
公司口号大全
2014/06/11 职场文书
项目申请汇报材料
2014/08/16 职场文书
运动会演讲稿50字
2014/08/25 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
JS函数式编程实现XDM一
2022/06/16 Javascript