在我的django项目中,DATA_UPLOAD_MAX_MEMORY_SIZE
的值为2.5MB
。但是我可以使用+10MB
将base64 image
数据curl
发送到服务器。
如何限制请求,以及为什么env在我的情况下不起作用?
答案 0 :(得分:1)
基于有关DATA_UPLOAD_MAX_MEMORY_SIZE
的Django docs:
在引发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])