mvccore / ext-form-field-file
MvcCore - Extension - Form - Field - File - form field input:file to upload file(s) and uploaded files validation.
v5.2.3
2024-04-18 22:49 UTC
Requires
- php: >=5.4.0
- mvccore/ext-form: ^5.2.20
- mvccore/mvccore: ^5.2.33
Suggests
- mvccore/ext-tool-mimetype-extension: MvcCore file extensions and mimetypes validator helper.
README
MvcCore form extension with input
type file
and file(s) upload validation.
This upload has no backward compatible javascript or flash inside. It's strictly HTML5 with no additional info displaying. You can extend this field to do it.
Installation
composer require mvccore/ext-form-field-file
Fields And Default Validators
input:file
Files
- configured by default
- validate submitted file or multiple files by checking:
- build in PHP upload errors (max. POST size atc...)
- if file is not any system file and if it is realy uploaded file (
is_uploaded_file()
, is_file(),
filesize()`) - allowed characters in filename, this validator automaticly sanitize uploaded filename every time
accept
attribute with allowed mime types by uploaded file(s) magic bytes (or by extension inaccept
attribute, converted on server side to mime type to check magic bytes)- ZIP/TAR.GZ/PNG file bombs
Features
- always server side checked attributes
required
,disabled
andreadonly
- all HTML5 specific and global atributes (by Mozilla Development Network Docs)
- every field has it's build-in specific validator described above
- every build-in validator adds form error (when necessary) into session and than all errors are displayed/rendered and cleared from session on error page, where user is redirected after submit
- any field is possible to render naturally or with custom template for specific field class/instance
- very extensible field classes - every field has public template methods:
SetForm()
- called immediatelly after field instance is added into form instancePreDispatch()
- called immediatelly before any field instance rendering typeRender()
- called on every instance in form instance rendering process- submethods:
RenderNaturally()
,RenderTemplate()
,RenderControl()
,RenderLabel()
...
- submethods:
Submit()
- called on every instance when form is submitted
Basic Example
$form = (new \MvcCore\Ext\Form($controller))->SetId('demo'); ... $photos = new \MvcCore\Ext\Forms\Fields\Time([ 'name' => 'photos', 'label' => 'Add your photos:', 'accept' => 'image/*', 'maxCount' => 5, // max. uploaded photos 'maxSize' => 2097152, // max. 2 MB in binary for one item ]); ... $form->AddFields($photos);
TODO
- implement RAR file bombs detection and bz2 file bombs