我有一个用于多个文件上传的文件上传处理程序,并设置了 MAX_CONTENT_SIZE。文档提到当总文件大小超过限制时,Flask 会抛出 413 异常,因此我还使用自定义 413 页面编写了 413 错误处理程序。但是,在测试文件上传时,我可以看到肯定会抛出 413 错误,但连接似乎每次都会中断,而不是呈现我的错误页面。仅供参考,我目前正在使用 Flask 开发服务器。
Code:
app.config['MAX_CONTENT_LENGTH'] = 50 * 1024 * 1024 # 50 Mb limit
@app.route('/upload', methods=['POST'])
def upload_files():
if request.method == 'POST':
uploaded_files = request.files.getlist('uploaded_files[]')
# do some stuff with these files
@app.errorhandler(413)
def error413(e):
return render_template('413.html'), 413
UPDATE:
好吧,奇怪的是,这个问题似乎只在使用 Flask 开发服务器时才会出现。我正在 Apache 上测试它,我的 413 错误页面渲染得很好。
使用生产 WSGI 服务器将解决这个问题(例如Gunicorn, Waitress)。以下是此问题的简单时间表。
2015
In 这个片段Armin Ronacher 发布的帖子中,他说:
您可能会注意到,如果您开始在传入的 POST 请求中不访问 .form 或 .files,某些浏览器将通过连接重置消息来表示这一点。如果您开始拒绝大于给定大小的上传,则可能会发生这种情况。
一些 WSGI 服务器可以为您解决该问题,而其他服务器则不能。例如,内置的 Flask 网络服务器非常愚蠢,不会尝试解决这个问题。
2018
我在 Flask 的文件上传文档中添加了一个提示(烧瓶#2662):
连接重置问题
使用本地开发服务器时,您可能会收到连接重置错误而不是 413 响应。使用生产 WSGI 服务器运行应用程序时,您将获得正确的状态响应。
2021
我认为/希望它会在不久的将来在 Werkzeug 中得到修复(工厂#1513).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)