【发布时间】:2020-01-30 07:00:41
【问题描述】:
我有一个通过 Django Rest Framework 发送图像的表单。序列化器如图:
class AvatarSerializer(serializers.ModelSerializer):
avatar = Base64ImageField(validators=[image_validation])
class Meta:
model = Profile
fields = ('avatar',)
我还进行了图像验证,检查图像的大小,使其不超过 12MB:
def image_validation(image):
# 12MB
MAX_FILE_SIZE = 12000000
print(image.name)
if image.size > MAX_FILE_SIZE:
print(image.size)
raise ValidationError("File size too big!")
当我尝试上传大于 12mb 的图像时,图像大小会被打印出来,但是,我在 Chrome 的网络选项卡中得到了这个响应:Failed to load response data 我读到这可能是因为图像的大小(我试图上传一张 30mb 的图片)。 ValidationError 未显示,用户收到 500 服务器错误。我该如何解决这个问题?
【问题讨论】:
-
每个请求都有服务器超时。如果请求花费太多时间,它将在进入序列化程序之前终止并返回 500 内部错误。
-
@user2896120 你在用
django-extra-fields代替Base64ImageField吗? -
@Mirza715 我该如何做才能在花费太多时间时返回有效错误?
-
@funnydman 我正在使用
Base64ImageField -
@user2896120 看到这个stackoverflow.com/questions/42155616/…。在旁注中,在将文件上传到服务器之前尝试压缩文件
标签: django django-rest-framework