Flask Ограничение размера файла - ошибка 413 закрывает соединение - PullRequest
0 голосов
/ 13 июля 2020

Я устанавливаю ограничение на количество файлов в 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 -

1 Ответ

0 голосов
/ 13 июля 2020
from flask import redirect

@app.errorhandler(413)
def largefile_error(e):
 return redirect(url_for("your_function_name")), 413

вы можете использовать this для справки

...