Is there a way to limit the upload file size for files and images on Plone 5.2 (python 3)? I know this was possible with Archetypes but I cannot find a solution with Dexterity content types.
The only thing that comes to my mind is to set the upload_max_filesize
parameter in the apache configuration. Would this cause any problem with the bulk upload functionality?
This is not an answer to your question, but still a very useful add on – if your users keep adding very big images. I have used it in Plone 5, but not in 5.2.
Implement a plone.namedfile.interfaces.IPluggableImageFieldValidation
named adapter. The fields validation looks for adapters with this interfaces adapting field and value. All found adapters are called.
Thank you @jensens this is a very good suggestion!
This was added very recently to plone.namedfile (since 5.1.0 - 2019-10-21) and should simplify things a lot.
Indeed, I added it
That was easy @jensens :
configure.zcml
<adapter
factory=".form_setup.FileSizeValidator"
name="file_size"
/>
validators.py
from zope.interface import Interface
from zope.interface import implementer
from zope.component import adapter
from plone.namedfile.interfaces import IPluggableFileFieldValidation
from plone.namedfile.interfaces import INamedFileField
from zope.schema import ValidationError
@implementer(IPluggableFileFieldValidation)
@adapter(INamedFileField, Interface)
class FileSizeValidator(object):
def __init__(self, field, value):
self.field = field
self.value = value
def __call__(self):
if self.value.size > 20000000:
raise InvalidFileSizeError(self.field)
class InvalidFileSizeError(ValidationError):
"""Exception for file size too large"""
__doc__ = 'File size must be less than 20 MB.'
This works perfectly, but if the files are uploaded through bulk upload from folder_contents
the validation is not triggered. Am I missing something or is this supposed to work with single files upload only?
Hmm, interesting, I would say its a bug in bulk upload, because even then validation should be triggered. Please create a bug report at Issues · plone/Products.CMFPlone · GitHub