我们有一个Silverstripe网站,管理员可以使用userform模块创建在线表单。
为了允许通过表单上传文件,管理员在表单中添加一个"文件上传字段"。这会在表单中增加一个文件字段。
Filefield是UploadField的简化版本,它允许许多验证选项,包括最大上传文件大小。
Filefield是否存在这些选项?
我的问题是,我需要为后端CMS功能保持全局PHP upload_max_filesize
和post_max_size
的高值,但我想将前端Filefield上传限制在8meg。
如果文件超过了比PHP变量小的特定大小,是否可以验证userform模块中的Filefield,使其失败/显示消息?
看起来没有内置的功能。文档指出文件大小受到Web服务器[1]的限制。
然而,FileField
使用Upload
类的validate()
函数,后者又使用Upload_Validator
类的validate()
函数[2],后者检查Config
中的最大文件大小。
这意味着您可以在配置文件中添加以下内容以限制文件大小:
# Don't forget to flush afterwards :-)
Upload_Validator:
default_max_file_size: '1m' # 1 megabyte
请注意,这是一个默认设置,这意味着它可能也会影响所有其他UploadField
。但是,您可以对需要处理较大文件的其他UploadField
设置限制。
[1]https://github.com/silverstripe/silverstripe-userforms/blob/master/docs/en/user-documentation.md#file-上传字段
[2]https://github.com/silverstripe/silverstripe-framework/blob/master/filesystem/Upload.php#L536