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应用程序时,经常会用到这个函数来提供下载功能。