#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
)