设置最大值上传Archetypes FileField的大小

时间:2012-07-05 15:07:31

标签: plone

如何限制上传到Archetypes FileField的文件的大小?

1 个答案:

答案 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))