Flask send_file返回文件
在使用 Flask 开发Web应用程序时,有时候我们需要从服务器端向客户端返回文件。Flask提供了send_file
方法来实现这一功能。本文将详细介绍如何使用send_file
方法返回文件。
send_file方法的基本用法
在Flask中,send_file
方法用于向客户端返回文件。其基本用法如下:
from flask import Flask, send_file
app = Flask(__name)
@app.route('/download')
def download_file():
return send_file('path/to/your/file.txt')
以上代码中,当用户访问/download
路径时,会返回file.txt
文件给客户端。需要注意的是,send_file
方法默认会将文件作为附件下载,如果需要在浏览器内直接显示文件内容,可以设置as_attachment=False
。
@app.route('/view')
def view_file():
return send_file('path/to/your/file.txt', as_attachment=False)
返回文件的其他参数设置
除了基本用法外,send_file
方法还支持一些其他参数设置,以适应不同的需求。
attachment_filename
:设置返回文件的文件名,若不设置则默认为文件本身的文件名。mimetype
:设置返回文件的MIME类型,可以根据不同类型的文件设置不同的MIME类型。last_modified
:设置文件的最后修改时间,当客户端缓存有此文件时会使用此时间来验证是否需要重新下载文件。
@app.route('/download')
def download_file():
return send_file('path/to/your/file.txt',
attachment_filename='new_file_name.txt',
mimetype='text/plain',
last_modified=1234567890)
完整示例
下面给出一个完整的示例代码,演示如何使用send_file
方法返回文件。
from flask import Flask, send_file
app = Flask(__name)
@app.route('/download')
def download_file():
return send_file('data/sample.pdf',
attachment_filename='new_file_name.pdf',
mimetype='application/pdf',
as_attachment=True)
if __name__ == '__main__':
app.run()
在上面的示例中,用户访问/download
路径时会返回sample.pdf
文件给客户端,并设置文件名为new_file_name.pdf
,MIME类型为application/pdf
。
运行结果
当用户访问/download
路径时,浏览器会下载sample.pdf
文件,文件名为new_file_name.pdf
,MIME类型为application/pdf
。
总结
send_file
方法是Flask中用于返回文件的重要方法,可以方便地将文件发送给客户端。通过设置适当的参数,可以根据具体需求返回不同类型的文件,并控制文件的附件下载或内联显示。