1

Archetypes FileField にアップロードされるファイルのサイズを制限するにはどうすればよいですか?

4

1 に答える 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)
    ),
)

個別に構成する別の最大サイズを使用するには、MaxSizeValidatorATContentTypesが使用するものと同じものを使用して新しい名前で登録し、バリデーターの代わりにそのバリデーターを使用し'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 に答える