我的包含send_file()的函数似乎没有更新

时间:2019-04-09 09:04:21

标签: python file flask upload

我正在使用Flask应用程序更新一些PDF文件,将它们转换为Excel文件,然后将此文件发送回用户。我正在使用一个实例文件夹来存储pdf和excel文件。

但是,当用户按下按钮“下载”以下载生成的Excel文件时,则会下载旧文件(从旧会话中下载)。

此外,例如,当我尝试更改代码时,我更改了此Excel文件的名称:我可以在实例文件夹中看到新名称,但是当我使用网络应用下载文件时,它仍然是旧名称(旧文件)。我不知道webapp在哪里寻找这个旧文件...

MEDIA_FOLDER = '/media/htmlfi/'
app = Flask(__name__)
app.config.from_object(Config)
INSTANCE_FOLDER = app.instance_path

app.config['UPLOAD_FOLDER'] = INSTANCE_FOLDER+MEDIA_FOLDER
@app.route('/file/')
def send():
    folder = app.config['UPLOAD_FOLDER']
    try:
        return send_file(folder+ "file.xlsx", as_attachment=True)
    finally:
        os.remove(folder+ "file.xlsx")
<a href="{{ url_for('send') }}"  ><button class='btn btn-default'>DOWNLOAD</button></a>

总体而言,我真的是webapp的新手,谢谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

send_file带有一个cache_timeout参数,该参数是您要缓存下载内容的秒数。默认为12小时。

return send_file(
    file.file_path(),
    as_attachment=True,
    cache_timeout=app.config['FILE_DOWNLOAD_CACHE_TIMEOUT'],
    attachment_filename=file.file_name
)

http://flask.pocoo.org/docs/1.0/api/