На нашем flask сайте мы реализовали кнопку «Скачать». Эта кнопка вызывает функцию в flask, которая предоставляет пользователю заархивированный файл с помощью send_file (). В первый раз все отлично работает. После повторного нажатия на кнопку пользователь снова получает тот же файл. Кажется, хорошо, но когда снова нажимается кнопка, файл, который должен отправить flask, изменяется, а старый больше не существует.
Я пытался понять, почему это происходит с отладчиком PyCharm и заметил, что после повторного нажатия кнопки загрузки, процедура загрузки даже не вызывается. Поэтому я думаю, что на заднем плане происходит какое-то кэширование. Я даже удалил файл для отправки из файловой системы, а затем снова нажал кнопку «Загрузить» ... Я получил исходный файл обратно.
Возможно, вы, ребята, испытали нечто подобное и можете помочь мне с вашими знаниями , Заранее спасибо.
Код загрузки:
@app.route('/download/<expID>')
def download(expID):
experiment = dbc.getExperiment(int(expID))
# only execute, if owner of experiment calls it AND experiment is NOT running or in queue
if experiment.getOwner() == cas.username and experiment.getStatus() != 1 and experiment.getStatus() != 2:
ownerPath = dbc.getUser(experiment.getOwner()).getPath()
fileName = cas.username + "_" + expID
# remove old zip (if existing)
try:
os.remove(experiment.getPath() + "/" + fileName + ".zip")
except FileNotFoundError:
pass
# create zip in owner folder to work around recursion problem
make_archive(ownerPath + "/" + fileName, 'zip', root_dir=experiment.getPath(), base_dir=None)
# move from owner folder to owner/experiment folder
shutil.move(ownerPath + "/" + fileName + ".zip", experiment.getPath() + "/" + fileName + ".zip");
# trigger download
return send_file(
experiment.getPath()+"/"+fileName + ".zip", as_attachment=True)
return redirect('/dashboard')
Кнопка:
<form action="/download/{{experiments[i][0]}}">
<input type="submit" id="download" value="download" />
</form>