gpt4 book ai didi

python - Flask send_file 正在发送旧文件而不是最新文件

转载 作者:行者123 更新时间:2023-12-02 10:14:44 28 4
gpt4 key购买 nike

我有一个 Flask 应用程序,其中服务器使用一个 Flask route 创建一个 csv 文件并将其保存到服务器。使用客户端页面上生成的按钮,触发另一个 Flask route 来获取最新文件,将其移动到 tmp 文件夹并使用 send_file 将该文件发送给用户。

现在,当我第一次运行该进程并下载文件时,一切都按预期进行。然而,当我第二次运行该过程时,它为我提供旧的 CSV,而不是新生成的 CSV。这种情况一直持续到我点击浏览器上的刷新按钮为止。

以下是我的应用程序代码:

from flask import Flask, render_template, flash, redirect, request, url_for, Response, send_file
import os
import time
import shutil
import glob

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'

@app.route('/')
def index():
return render_template('index.html')


@app.route('/downloadcsv')
def downloadcsv():
current = os.getcwd()
try:
list = glob.glob('{}/*.csv'.format(current))
except:
print('No file found')
basename = os.path.basename(os.path.normpath(max(list, key=os.path.getctime)))
shutil.move(basename, './tmp/{}'.format(basename))
return send_file('./tmp/{}'.format(basename), as_attachment=True)

如果需要,以下是“生成”下载按钮的 JS 代码:

var download = '<div id="downloadsection" class="container-contact100-form-btn"><a href="/downloadcsv"><button id="download" class="contact100-form-btn"> <span>DOWNLOAD CSV</span></button></a></div>';

如果我使下载过程过于复杂,请告诉我...

谢谢!!

最佳答案

send_file 有一个您未配置的缓存超时。它将发送已缓存的相同文件,除非您告诉它不要缓存该文件,如下所示:

send_file('./tmp/{}'.format(basename), as_attachment=True, cache_timeout=0)

有关详细信息,请参阅以下引用资料:

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

http://flask.pocoo.org/docs/1.0/api/#flask.Flask.get_send_file_max_age

http://flask.pocoo.org/docs/1.0/config/#SEND_FILE_MAX_AGE_DEFAULT

关于python - Flask send_file 正在发送旧文件而不是最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55519452/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com