Моя функция, содержащая send_file (), похоже, не обновляется

#python #file #flask #upload

#python #файл #flask #загрузка

Вопрос:

Я использую приложение Flask для обновления некоторых файлов PDF, преобразования их в файл Excel и отправки этого файла обратно пользователю. Я использую папку экземпляра для хранения файлов pdf и Excel.

Но когда пользователь нажимает кнопку «Загрузить», чтобы загрузить сгенерированный файл Excel, загружается старый файл (из более старого сеанса).

Более того, когда я пытаюсь изменить свой код, например, я изменил имя этого файла Excel: я вижу новое имя в папке экземпляра, но когда я загружаю файл с помощью веб-приложения, это все еще старое имя (и старый файл). Я понятия не имею, где веб-приложение ищет этот старый файл…

 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:

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/