2012-07-05 2 views

답변

3

ATContentTypes는 checkFileMaxSize 검증을 registeres :

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 "제한 없음"기본값하지만 당신은 변경할 수있는 max_file_size 매개 변수 $INSTANCE_HOME/etc/atcontentypes.confProducts/ATContentTypes/etc/atcontenttypes.conf.in을 복사하고 설정하여 :합니다 (

<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 바이트)의 수 :`isMaxSize` 유효성 검사기를 사용하는 것보다

from Products.validation.config import validation 
from Products.validation.validators.SupplValidators import MaxSizeValidator 

validation.register(MaxSizeValidator('checkFileMax50mb', 50)) 
+0

리소스 혹스를 막기 위해, Plone을 nginx 뒤에서 실행하는 경우 Plone에 전달하기 전에 요청의 선언 된 크기를 즉시 확인할 수 있습니다. 이 http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size 당신은 아마 너무의 nginx에서 오류를 처리 할 수 ​​있습니다 참조 : http://nginx.org/en/docs/http /ngx_http_core_module.html#error_page –