Flask send_file() 函数详解

Flask send_file() 函数详解

Flask send_file() 函数详解

在Flask中,send_file()函数用于从视图函数中向客户端发送文件。这个函数非常方便,可以直接发送文件而无需将其放在静态文件夹中。

send_file() 函数的基本用法

send_file()函数的基本用法如下:

from flask import send_file

@app.route('/download')
def download_file():
    return send_file('path/to/file.txt')

在这个示例中,download_file()视图函数会向客户端发送file.txt文件。send_file()函数会自动检测文件的MIME类型,并设置响应头中的Content-Type。

send_file() 函数的参数

send_file()函数有几个重要的参数,可以控制文件的发送方式和响应头的设置。

文件路径

filename参数是必需的,用于指定要发送的文件的路径。可以是绝对路径,也可以是相对路径。如果是相对路径,会以Flask应用程序的根目录作为起点。

send_file('path/to/file.txt')

MIME类型

mimetype参数用于指定文件的MIME类型。如果不指定,send_file()函数会根据文件的扩展名自动设置MIME类型。

send_file('path/to/file.txt', mimetype='text/plain')

响应头

as_attachment参数用于指定是否作为附件下载。如果设置为True,浏览器会提示用户下载文件,而不是在浏览器中打开。

send_file('path/to/file.txt', as_attachment=True)

send_file() 函数示例

下面是一个完整的示例,演示如何使用send_file()函数发送一个图片文件:

from flask import Flask, send_file

app = Flask(__name__)

@app.route('/')
def index():
    return '''
    <h1>Download Image</h1>
    <a href="/download">Click here to download image</a>
    '''

@app.route('/download')
def download_image():
    return send_file('static/image.jpg', mimetype='image/jpeg', as_attachment=True)

if __name__ == '__main__':
    app.run()

在这个示例中,用户访问/download路径时会触发download_image()视图函数,发送image.jpg图片文件。浏览器会提示用户下载这个图片文件,并将其保存到本地。

总结

send_file()函数是Flask中非常方便的一个函数,可以用于发送文件给客户端。通过设置不同的参数,可以控制文件的发送方式和响应头的设置。在开发Web应用程序时,经常会用到这个函数来提供下载功能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程