gpt4 book ai didi

python - Django max_upload_size 被忽略

转载 作者:行者123 更新时间:2023-11-28 18:05:08 28 4
gpt4 key购买 nike

我有这段代码,但由于某种原因,文件大小被忽略了,即使我在 formatChecker.py 中直接将其设置为 ('max_upload_size', 5242880),该值似乎在上传发生后被忽略。

设置.py

MAX_UPLOAD_SIZE = "5242880"

格式检查器.py

from django.db.models import FileField
from django.forms import forms
from django.template.defaultfilters import filesizeformat
from django.utils.translation import ugettext_lazy as _
from myproject.settings import MAX_UPLOAD_SIZE


class ContentTypeRestrictedFileField(FileField):
"""
Same as FileField, but you can specify:
* content_types - list containing allowed content_types. Example: ['application/pdf', 'image/jpeg']
* max_upload_size - a number indicating the maximum file size allowed for upload.
2.5MB - 2621440
5MB - 5242880
10MB - 10485760
20MB - 20971520
50MB - 5242880
100MB 104857600
250MB - 214958080
500MB - 429916160
"""

def __init__(self, *args, **kwargs):
self.content_types = kwargs.pop('content_types', [])

super(ContentTypeRestrictedFileField, self).__init__(*args, **kwargs)

def clean(self, *args, **kwargs):
data = super(ContentTypeRestrictedFileField, self).clean(*args, **kwargs)

file = data.file
try:
content_type = file.content_type
if content_type in self.content_types:
if file._size > int(MAX_UPLOAD_SIZE):
raise forms.ValidationError(_('Please keep filesize under %s. Current filesize %s') % (
filesizeformat(MAX_UPLOAD_SIZE), filesizeformat(file._size)))
else:
raise forms.ValidationError(_('Filetype not supported.'))
except AttributeError:
pass
return data

模型.py

...
class Post(models.Model):
postattachment = ContentTypeRestrictedFileField(
blank=True,
null=True,
upload_to=get_file_path_user_uploads,
content_types=['application/pdf',
'application/zip',
'application/x-rar-compressed',
'application/x-tar',
'image/gif',
'image/jpeg',
'image/png',
'image/svg+xml',
]
)
...

知道为什么会出现这个问题吗?我是不是忘记了什么?

最佳答案

setting.py 中添加 MAX_UPLOAD_SIZE = "5242880"

然后在 View 文件中

from django.conf import settings
file._size > settings.MAX_UPLOAD_SIZE

file._size > int(settings.MAX_UPLOAD_SIZE)

在init方法中,它弹出了两个键,所以它不存在

    def __init__(self, *args, **kwargs):
self.content_types = kwargs.pop('content_types', [])
self.max_upload_size = kwargs.pop('max_upload_size',[])

所以删除这些行

self.content_types = kwargs.pop('content_types', [])
self.max_upload_size = kwargs.pop('max_upload_size', [])

关于python - Django max_upload_size 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969761/

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