如何利用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调度框架APScheduler使用
Mar 28 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Python reduce()函数的用法小结
Nov 15 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
python搜索包的路径的实现方法
Jul 19 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
在django中自定义字段Field详解
Dec 03 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
pandas的resample重采样的使用
Apr 24 Python
如何基于windows实现python定时爬虫
May 01 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
详解vue-router基本使用
2017/04/18 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
Python字符串格式化输出方法分析
2016/04/13 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
英国网上花店:Bunches
2016/11/29 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
快餐店的创业计划书范文
2014/01/29 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
小学运动会报道稿
2014/10/04 职场文书
男方婚礼答谢词
2015/01/20 职场文书
个人求职信格式范文
2015/03/20 职场文书
个人工作决心书
2015/09/22 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server