Flask框架编写文件下载接口过程讲解

 更新时间:2023年01月03日 15:34:42   作者:袖子味  
这篇文章主要介绍了Flask框架编写文件下载接口的过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

方式一

@app.route("/download1")
def download():
    # return send_file('test.exe', as_attachment=True)
    return send_file('2.jpg')
    # return send_file('1.mp3')

如果不加as_attachment参数,则会向浏览器发送文件,比如发送一张图片:

发送mp3

加上as_attachment参数,则会下载文件。

方式二

通过Response来实现

部分代码如下:

@app.route("/download2")
def download2():
    file_name = "1.jpg"
    #https://www.runoob.com/http/http-content-type.html
    response = Response(file_send(file_name), content_type='image/jpeg')
    response.headers["Content-disposition"] = f'attachment; filename={file_name}'
    return response

其中content-type要根据文件的具体类型来设置,具体参考如下常见的:

content-type(内容类型),一般是指网页中存在的 content-type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,content-type 标头告诉客户端实际返回的内容的内容类型。

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式
  • application/xhtml+xml :XHTML格式
  • application/xml: XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON数据格式
  • application/pdf:pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

完整代码

app.py

from flask import Flask,send_file,Response
from flask_cors import CORS
app = Flask(__name__)
CORS(app,resources={r"/*": {"origins": "*"}},supports_credentials=True)
@app.route("/download1")
def download():
    # return send_file('test.exe', as_attachment=True)
    # return send_file('2.jpg')
    return send_file('1.mp3')
    # filefold file
    # return send_from_directory('./', 'test.exe', as_attachment=True)
# send big file
def file_send(file_path): 
    with open(file_path, 'rb') as f:
        while 1:
            data = f.read(20 * 1024 * 1024)  # per 20M
            if not data:
                break
            yield data
@app.route("/download2")
def download2():
    file_name = "1.jpg"
    response = Response(file_send(file_name), content_type='image/jpeg')
    response.headers["Content-disposition"] = f'attachment; filename={file_name}'
    return response
if __name__ == '__main__':
    app.config['JSON_AS_ASCII'] = False
    app.run(debug=True)

到此这篇关于Flask框架编写文件下载接口过程讲解的文章就介绍到这了,更多相关Flask文件下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中关于集合的介绍与常规操作解析

    Python中关于集合的介绍与常规操作解析

    Python除了List、Tuple、Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的
    2021-09-09
  • Python文本处理简单易懂方法解析

    Python文本处理简单易懂方法解析

    这篇文章主要介绍了Python文本处理简单易懂方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 四步教你学会打包一个新的Python模块

    四步教你学会打包一个新的Python模块

    当你安装应用程序时,通常是安装一个软件包,其中包含应用程序的可执行代码和重要文件。在 Linux上,软件一般被打包成RPM或DEB等格式,然而几乎每天都有新的Python模块发布,因此你很容易遇到一个尚未打包的Python模块。本文教你四步打包一个新的Python模块
    2022-09-09
  • 一文带你手撕Python之散列类型

    一文带你手撕Python之散列类型

    这篇文章主要介绍了Python字典的定义、操作方法和集合的基本概念,字典以键值对形式存储数据,可通过键访问值,操作包括增删改查等,集合是无序不重复的数据结构,适用于去重和集合运算,需要的朋友可以参考下
    2024-09-09
  • Python中的函数作用域

    Python中的函数作用域

    在python中,一个函数就是一个作用域。这篇文章重点给大家介绍python中的函数作用域,感兴趣的朋友一起看看吧
    2018-05-05
  • Python Concurrent Futures解锁并行化编程的魔法示例

    Python Concurrent Futures解锁并行化编程的魔法示例

    Python的concurrent.futures模块为并行化编程提供了强大的工具,使得开发者能够轻松地利用多核心和异步执行的能力,本文将深入探讨concurrent.futures的各个方面,从基础概念到高级用法,为读者提供全面的了解和实用的示例代码
    2023-12-12
  • 使用Python正则表达式操作文本数据的方法

    使用Python正则表达式操作文本数据的方法

    这篇文章主要介绍了使用Python正则表达式操作文本数据的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Python数据结构之双向链表详解

    Python数据结构之双向链表详解

    单链表只有一个指向直接后继的指针来表示结点间的逻辑关系,可以方便的从任一结点开始查找其后继结点,但要找前驱结点则比较困难,双向链表是为了解决这一问题,使用两个指针表示结点间的逻辑关系。本文将重点为大家介绍双向链表的相关操作,需要的可以参考一下
    2022-01-01
  • Python入门_浅谈字符串的分片与索引、字符串的方法

    Python入门_浅谈字符串的分片与索引、字符串的方法

    下面小编就为大家带来一篇Python入门_浅谈字符串的分片与索引、字符串的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 详解如何使用Python隐藏图像中的数据

    详解如何使用Python隐藏图像中的数据

    隐写术是在任何文件中隐藏秘密数据的艺术。隐写术的主要目的是隐藏任何文件中的预期信息,而不实际改变文件的外观,即文件外观看起来和以前一样。本文将利用Python实现隐藏图像中的数据,需要的可以参考一下
    2022-02-02

最新评论