首页 > 解决方案 > DATA_UPLOAD_MAX_MEMORY_SIZE 不限制 POST 发送的数据大小

问题描述

在我的 django 项目中,DATA_UPLOAD_MAX_MEMORY_SIZE值为2.5MB. 但我可以+10MB使用. 我如何限制请求以及为什么该环境在我的情况下不起作用?base64 imagecurl

标签: djangocurl

解决方案


基于 django文档关于DATA_UPLOAD_MAX_MEMORY_SIZE

在引发 SuspiciousOperation (RequestDataTooBig) 之前,请求正文的最大大小(以字节为单位)。检查在访问 request.body 或 request.POST 时完成,并根据不包括任何文件上传数据的总请求大小进行计算。

通过使用 django rest 框架序列化程序,您可以向序列化程序添加验证器并检查文件大小,如下面的代码:

from rest_framework import serializers

def file_validator(file):
    """
    file validator
    check max file size allowed for file
    :param file:
    :return:
    """
    max_file_size = 1024 * 1024 * 2  # 2MB
    if file.size > max_file_size:
        raise serializers.ValidationError(_('Max file size is {} and your file size is {}'.
                                          format(max_file_size, file.size)))


class FileSerializer(serializers.Serializer):
    file = serializers.FileField(validators=[file_validator])

推荐阅读