Очистка файла POST в FlaskWTF - PullRequest
0 голосов
/ 29 апреля 2020

Я использую 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 не отправляет эту строку снова.

Итак, есть ли способ избежать Это? Может быть, мне следует удалить файл из формы после загрузки? Как я могу это сделать?

...