亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Flask send_file 正在發送舊文件而不是最新文件

Flask send_file 正在發送舊文件而不是最新文件

慕的地8271018 2021-12-29 10:41:44
我有一個 Flask 應用程序,其中使用一個 Flaskroute服務器創建一個 csv 文件并將其保存到服務器。使用客戶端頁面上生成的按鈕,route觸發另一個 Flask以獲取最新文件,將其移動到 tmp 文件夾并使用send_file.現在,當我第一次運行該過程并下載文件時,一切都按預期進行。但是,第二次運行該過程時,它為我提供舊的 CSV 而不是新生成的 CSV。這一直持續到我點擊瀏覽器上的刷新按鈕。以下是我的應用程序代碼:from flask import Flask, render_template, flash, redirect, request, url_for, Response, send_fileimport osimport timeimport shutilimport globapp = 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>';如果我使下載過程過于復雜,也請告訴我...
查看完整描述

2 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

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


查看完整回答
反對 回復 2021-12-29
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

@ritlew 幾乎回答了這個問題,添加到他的答案中,添加后cache_timeout=0,清除瀏覽器緩存并在隱身模式下點擊 URL。

查看完整回答
反對 回復 2021-12-29
  • 2 回答
  • 0 關注
  • 352 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號