如何限制上传到Archetypes FileField的文件的大小?
答案 0 :(得分:3)
ATContentTypes注册checkFileMaxSize
验证程序:
from Products.validation.config import validation
from Products.validation.validators.SupplValidators import MaxSizeValidator
validation.register(MaxSizeValidator('checkFileMaxSize',
maxsize=zconf.ATFile.max_file_size))
其中zconf.ATFile.max_file_size
默认为“无限制”,但您可以通过将Products/ATContentTypes/etc/atcontenttypes.conf.in
复制到$INSTANCE_HOME/etc/atcontentypes.conf
并设置max_file_size
参数来改变这一点:
<archetype ATFile>
# maximum file size in byte, kb or mb
max_file_size 10mb
</archetype>
(格式也支持gb
,但默认文件不包括列表中的内容。)
如果您有自定义文件字段(以上仅适用于默认的Archetypes ATFile架构),您可以重新使用该验证器或创建自己的验证器。要重复使用上述验证程序,只需将其添加到validators
属性:
from Products.validation import V_REQUIRED
FileField('yourfilefield',
# ...
validators = (
('isNonEmptyFile', V_REQUIRED),
('checkFileMaxSize', V_REQUIRED)
),
)
要使用您独立配置的其他最大大小,请使用ATContentTypes使用的相同MaxSizeValidator
并以新名称注册它,然后使用该验证程序而不是'checkFileMaxSize'
验证程序;您指定的值是mebibytes(1024 2 字节)的数量:
from Products.validation.config import validation
from Products.validation.validators.SupplValidators import MaxSizeValidator
validation.register(MaxSizeValidator('checkFileMax50mb', 50))