flask send_file

flask send_file

flask send_file

Flask是一个使用Python编写的轻量级Web应用程序框架。它提供了用于构建Web应用程序的核心功能,同时也支持简单而灵活的方式扩展其功能。在Flask中,我们经常需要向用户发送文件,例如图片、文档、音频或视频等。send_file是Flask中用于将文件发送给客户端的方法。

send_file方法

send_file方法位于flask模块中,可以通过以下代码导入:

from flask import Flask, send_file

send_file方法的基本语法如下:

send_file(filename_or_fp, mimetype=None, as_attachment=False, attachment_filename=None, add_etags=True, cache_timeout=None, conditional=False, last_modified=None, max_age=None)

接下来,我们将详细介绍send_file方法的参数及用法。

参数说明

  • filename_or_fp:要发送的文件路径或文件对象。
  • mimetype:文件的MIME类型。如果未提供,将根据文件扩展名推断。
  • as_attachment:如果为True,客户端将提示将文件保存为附件。
  • attachment_filename:如果提供,客户端将使用此文件名保存文件。
  • add_etags:如果为True,将在响应头中添加ETag。
  • cache_timeout:缓存超时时间,以秒为单位。
  • conditional:如果为True,将检查请求头中的条件。
  • last_modified:文件的最后修改时间。
  • max_ageCache-Control: max-age响应头的值。

用法示例

示例1:发送本地文件

首先,我们将创建一个Flask应用程序,并在应用程序的根目录下放置一个名为example.txt的文本文件。然后添加以下代码:

from flask import Flask, send_file

app = Flask(__name__)

@app.route('/')
def send_example_file():
    return send_file('example.txt')

在这个示例中,当用户访问根路径/时,将发送名为example.txt的文本文件。

示例2:指定MIME类型

@app.route('/image')
def send_image_file():
    return send_file('example.jpg', mimetype='image/jpeg')

在这个示例中,我们指定了文件example.jpg的MIME类型为image/jpeg,因此客户端将知道这是一个JPEG图像文件。

示例3:下载附件

@app.route('/download')
def download_file():
    return send_file('example.pdf', as_attachment=True, attachment_filename='report.pdf')

在这个示例中,当用户访问/download路径时,将以附件形式下载名为example.pdf的PDF文件,保存文件名为report.pdf

示例4:缓存和条件发送

@app.route('/cached')
def send_cached_file():
    return send_file('example.png', cache_timeout=3600, conditional=True, last_modified=os.path.getmtime('example.png'))

在这个示例中,我们设置了缓存超时时间为3600秒,并在响应头中添加了ETag,以便在条件发送文件时检查文件是否已更改。

运行结果

使用以上示例代码,您可以在Flask应用程序中使用send_file方法发送文件。您可以根据需要调整参数和文件路径,以适应您的特定用例。当用户访问相关路由时,文件将被发送给客户端,并根据您指定的配置执行相应的操作,如下载附件或缓存文件。Flask的send_file方法提供了方便的方式来处理文件发送和下载的需求,使您的应用程序更加灵活和强大。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程