django - DATA_UPLOAD_MAX_MEMORY_SIZE 不限制 POST 发送的数据大小
问题描述
在我的 django 项目中,DATA_UPLOAD_MAX_MEMORY_SIZE
值为2.5MB
. 但我可以+10MB
使用. 我如何限制请求以及为什么该环境在我的情况下不起作用?base64 image
curl
解决方案
基于 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])