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

 更新时间:2020年06月02日 11:35:33   作者:deweizhang  
这篇文章主要介绍了如何利用python web框架做文件流下载的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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数据类型中的字符串你了解多少

    这篇文章主要为大家详细介绍了python数据类型中的字符串,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • PYTHON如何读取和写入EXCEL里面的数据

    PYTHON如何读取和写入EXCEL里面的数据

    这篇文章主要介绍了PYTHON如何读取和写入EXCEL里面的数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python基础之矩阵输入的实例

    Python基础之矩阵输入的实例

    这篇文章主要介绍了Python基础之矩阵输入的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 在Python编程过程中用单元测试法调试代码的介绍

    在Python编程过程中用单元测试法调试代码的介绍

    这篇文章主要介绍了在Python编程过程中用单元测试法调试代码的介绍,包括使用断言等,有助于debug时的效率提升,需要的朋友可以参考下
    2015-04-04
  • Python标准库shutil模块使用方法解析

    Python标准库shutil模块使用方法解析

    这篇文章主要介绍了Python标准库shutil模块使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Pytorch之nn.Upsample()和nn.ConvTranspose2d()用法详解

    Pytorch之nn.Upsample()和nn.ConvTranspose2d()用法详解

    nn.Upsample和nn.ConvTranspose2d是PyTorch中用于上采样的两种主要方法,nn.Upsample通过不同的插值方法(如nearest、bilinear)执行上采样,没有可学习的参数,适合快速简单的尺寸增加,而nn.ConvTranspose2d通过可学习的转置卷积核进行上采样
    2024-10-10
  • Python一行代码实现打开各种类型的文件

    Python一行代码实现打开各种类型的文件

    在处理大量文件时,手动一个个打开是不是很麻烦,这时候,Python的os.startfile()就是你的救星啦,本文我们就来看看如何一行代码打开各种类型的文件吧
    2024-12-12
  • python调用并链接MATLAB脚本详解

    python调用并链接MATLAB脚本详解

    这篇文章主要介绍了python调用并链接MATLAB脚本详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python利用雪花算法实现生成唯一ID

    Python利用雪花算法实现生成唯一ID

    雪花算法是在一个项目体系中生成全局唯一ID标识的一种方式,偶然间看到了Python使用雪花算法不尽感叹真的是太便捷了。本文就来聊聊这具体的实现方法,感兴趣的可以了解一下
    2022-11-11
  • 详解pandas数据合并与重塑(pd.concat篇)

    详解pandas数据合并与重塑(pd.concat篇)

    这篇文章主要介绍了详解pandas数据合并与重塑(pd.concat篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论