当前位置: 首页 > 编程笔记 >

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

那谦
2023-03-14
本文向大家介绍如何利用python web框架做文件流下载的实现示例,包括了如何利用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爬虫框架scrapy实现的文件下载功能示例,包括了Python爬虫框架scrapy实现的文件下载功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python爬虫框架scrapy实现的文件下载功能。分享给大家供大家参考,具体如下: 我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一

  • 本文向大家介绍Spring Mvc下实现以文件流方式下载文件的方法示例,包括了Spring Mvc下实现以文件流方式下载文件的方法示例的使用技巧和注意事项,需要的朋友参考一下 项目中需要对一个点击事件进行下载操作,同时通过点击事件,已经可以从jsp页面获取到需要访问的URL和下载的文件名(数据库获取,jsp页面显示)。点击事件JS如下: 该ajax调用后台(checkDownload)方法,首先判

  • 我是GWT和一般Web应用程序的新手。 我正在制作一个GWT web应用程序。它提供的一个功能是通过单击网页上的按钮下载文件。不幸的是,文件本身并不是物理上位于服务器端。服务器端需要通过对另一个web服务的REST调用来获取文件的InputStream。 我的问题是: 如何将流传递到客户端,以便浏览器可以开始下载? 在开始之前,我必须在服务器上物理写入文件吗? 非常感谢 编辑:我找到了这个例子:使

  • 本文向大家介绍C#利用WebClient实现两种方式下载文件,包括了C#利用WebClient实现两种方式下载文件的使用技巧和注意事项,需要的朋友参考一下 最近整理了WebClient 两种方式下载文件 ,留作以后查询。 第一种  就OK了。 第二种 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍利用ssh实现服务器文件上传下载,包括了利用ssh实现服务器文件上传下载的使用技巧和注意事项,需要的朋友参考一下 通过ssh实现服务器文件上传下载 写在前面的话 之前记录过一篇使用apache的FTP开源组件实现服务器文件上传下载的方法,但是后来发现在删除的时候会有些权限问题,导致无法删除服务器上的文件。虽然在Windows上使用FileZilla Server设置读写权限后没问题,

  • 本文向大家介绍Java利用反射实现框架类的方法实例,包括了Java利用反射实现框架类的方法实例的使用技巧和注意事项,需要的朋友参考一下 框架类的简单实现 实现步骤: 1. 加载配置文件 2. 获取配置文件中定义的数据 3. 加载该类进内存 主要讲解第一步:加载配置文件 的相关知识。 Properties 是map接口的实现类,它有一个特有的功能:可以保存到流中或者从流中加载。本例中用到它的方法有: