Archetypes FileField にアップロードされるファイルのサイズを制限するにはどうすればよいですか?
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 に答える