Я использую FlaskWTF для загрузки файла на сервер:
class SubmitFileForm(FlaskForm):
data = FileField(validators=[FileRequired()])
Основной Flask файл:
@app.route('/problems/<problem_id>', methods=["GET", "POST"])
def problem(problem_id):
submit_file = SubmitFileForm()
if submit_file.validate_on_submit():
print(submit_file.data.data.read())
return 'File sent'
return render_template('problem.html',
submit_file_form=submit_file)
Форма в шаблоне:
<form method="post" enctype="multipart/form-data" name="file-solution-send" action="">
{{ submit_file_form.hidden_tag() }}
<label class="label">
<span class="primary-button">Upload file</span>
{{ submit_file_form.data(class="nodisp", onchange="this.form.submit()") }}
</label>
</form>
(Я использую метку, чтобы стилизовать кнопку загрузки и немедленно отправить f ie.)
Загрузка файла работает правильно, но если я нажимаю кнопку sh «Назад» в браузере, она отправляет файл снова и перенаправляет в «Файл отправлен» снова. Это очень важно, чтобы не отправлять файл снова, потому что во многих ситуациях пользователь должен нажать кнопку «назад» sh.
Другие формы без FileField (например, StringField) работают хорошо - я могу вернуться на страницу, и Flask не отправляет эту строку снова.
Итак, есть ли способ избежать Это? Может быть, мне следует удалить файл из формы после загрузки? Как я могу это сделать?