如何限制上传到 Archetypes FileField 的文件的大小?
问问题
897 次
1 回答
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)
),
)
要使用您独立配置的不同最大大小,请使用MaxSizeValidator
ATContentTypes 使用的相同大小并以新名称注册它,然后使用该验证器而不是'checkFileMaxSize'
验证器;您指定的值是兆字节数(1024 2个字节):
from Products.validation.config import validation
from Products.validation.validators.SupplValidators import MaxSizeValidator
validation.register(MaxSizeValidator('checkFileMax50mb', 50))
于 2012-07-05T16:12:46.690 回答