Я устанавливаю ограничение на количество файлов в Flask. Когда файлы загружаются, он правильно блокирует файлы размером более 4 МБ и возвращает ошибку 413. Однако это закрывает соединение на сервере, что означает, что перенаправление не работает. Что я хочу сделать, так это оставить соединение открытым при этой ошибке, чтобы затем я мог перенаправить пользователя.
Мой предел размера файла установлен как:
app.config['MAX_CONTENT_LENGTH'] = 4 * 1024 * 1024
Код, который фиксирует исключение это:
try:
form = FileUploadForm();
except Exception as e:
print(e)
flash(u"File size too large: please choose a file under 4mb","danger")
return redirect(url_for("home"))
Это возвращенное исключение:
413 Request Entity Too Large: The data value transmitted exceeds the capacity limit.
Код «return redirect (url_for (" home ")) не работает, я полагаю, потому что соединение закрывается из-за ошибки 413. Это Flask работает в режиме разработки.
Я пробовал код из предложенного ответа, но, похоже, это не сработало. Теперь мой код выглядит так:
@app.errorhandler(413)
def largefile_error(e):
print("Large file")
return redirect(url_for("addsign")), 413
@app.route('/addsign', methods=['GET', 'POST'])
def addsign():
if not current_user.is_authenticated:
flash(f"Please login to upload a sign","danger")
return redirect(url_for('home'))
form = FileUploadForm()
В консоли я вижу следующий вывод.
Large file
127.0.0.1 - - [13/Jul/2020 18:02:34] "POST /addsign HTTP/1.1" 413 -