gpt4 book ai didi

python - 是否可以在每个路由的基础上限制 Flask POST 数据大小?

转载 作者:太空狗 更新时间:2023-10-29 17:12:16 25 4
gpt4 key购买 nike

我知道有可能 set an overall limit on request size在 Flask 中:

app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024

但我想确保一个特定的路由不会接受超过一定大小的 POST 数据。

这可能吗?

最佳答案

您需要检查此特定路线本身;您可以随时测试内容长度; request.content_lengthNone 或整数值:

cl = request.content_length
if cl is not None and cl > 3 * 1024 * 1024:
abort(413)

在根据请求访问表单或文件数据之前执行此操作。

你可以把它变成你的 View 的装饰器:

from functools import wraps
from flask import request, abort


def limit_content_length(max_length):
def decorator(f):
@wraps(f)
def wrapper(*args, **kwargs):
cl = request.content_length
if cl is not None and cl > max_length:
abort(413)
return f(*args, **kwargs)
return wrapper
return decorator

然后将其用作:

@app.route('/...')
@limit_content_length(3 * 1024 * 1024)
def your_view():
# ...

这就是 Flask 所做的本质上;当您尝试访问请求数据时,首先会检查 Content-Length header ,然后再尝试解析请求正文。使用装饰器或手动检查,您只是进行了相同的测试,但在 View 生命周期中稍早一些。

关于python - 是否可以在每个路由的基础上限制 Flask POST 数据大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25036498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com