The Zend\FileInput class is a special Input type for uploaded files found in the $_FILES array.
While FileInput uses the same interface as Input, it differs in a few ways:
The biggest thing to be concerned about is that if you are using a <input type="file"> element in your form, you will need to use the FileInput instead of Input or else you will encounter issues.
Usage of FileInput is essentially the same as Input:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | use Zend\Http\PhpEnvironment\Request;
use Zend\Filter;
use Zend\InputFilter\InputFilter;
use Zend\InputFilter\Input;
use Zend\InputFilter\FileInput;
use Zend\Validator;
// Description text input
$description = new Input('description'); // Standard Input type
$description->getFilterChain() // Filters are run first w/ Input
->attach(new Filter\StringTrim());
$description->getValidatorChain() // Validators are run second w/ Input
->attach(new Validator\StringLength(array('max' => 140)));
// File upload input
$file = new FileInput('file'); // Special File Input type
$file->getValidatorChain() // Validators are run first w/ FileInput
->attach(new Validator\File\UploadFile());
$file->getFilterChain() // Filters are run second w/ FileInput
->attach(new Filter\File\RenameUpload(array(
'target' => './data/tmpuploads/file',
'randomize' => true,
)));
// Merge $_POST and $_FILES data together
$request = new Request();
$postData = array_merge_recursive($request->getPost(), $request->getFiles());
$inputFilter = new InputFilter();
$inputFilter->add($description)
->add($file)
->setData($postData);
if ($inputFilter->isValid()) { // FileInput validators are run, but not the filters...
echo "The form is valid\n";
$data = $inputFilter->getValues(); // This is when the FileInput filters are run.
} else {
echo "The form is not valid\n";
foreach ($inputFilter->getInvalidInput() as $error) {
print_r ($error->getMessages());
}
}
|
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.