RenameUploadΒΆ
Zend\Filter\File\RenameUpload can be used to rename or move an uploaded file to a new path.
Supported Options
The following set of options are supported:
- target (string) default: "*"
Target directory or full filename path.
- overwrite (boolean) default: false
Shall existing files be overwritten?
If the file is unable to be moved into the target path, a Zend\Filter\Exception\RuntimeException will be thrown.
- randomize (boolean) default: false
Shall target files have a random postfix attached? The random postfix will be a uniqid('_') after the file name and before the extension.
For example, "file.txt" will be randomized to "file_4b3403665fea6.txt"
- use_upload_name (boolean) default: false
When true, this filter will use the $_FILES[‘name’] as the target filename. Otherwise, the default target rules and the $_FILES['tmp_name'] will be used.
Warning
Be very careful when using the use_upload_name option. For instance, extremely bad things could happen if you were to allow uploaded .php files (or other CGI files) to be moved into the DocumentRoot.
It is generally a better idea to supply an internal filename to avoid security risks.
RenameUpload does not support an array of options like the``Rename`` filter. When filtering HTML5 file uploads with the multiple attribute set, all files will be filtered with the same option settings.
Usage Examples
Move all filtered files to a different directory:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | use Zend\Http\PhpEnvironment\Request;
$request = new Request();
$files = $request->getFiles();
// i.e. $files['my-upload']['tmp_name'] === '/tmp/php5Wx0aJ'
// i.e. $files['my-upload']['name'] === 'myfile.txt'
// 'target' option is assumed if param is a string
$filter = \Zend\Filter\File\RenameUpload("./data/uploads/");
echo $filter->filter($files['my-upload']);
// File has been moved to "./data/uploads/php5Wx0aJ"
// ... or retain the uploaded file name
$filter->setUseUploadName(true);
echo $filter->filter($files['my-upload']);
// File has been moved to "./data/uploads/myfile.txt"
|
Rename all filtered files to a new name:
1 2 3 4 5 6 7 8 9 | use Zend\Http\PhpEnvironment\Request;
$request = new Request();
$files = $request->getFiles();
// i.e. $files['my-upload']['tmp_name'] === '/tmp/php5Wx0aJ'
$filter = \Zend\Filter\File\Rename("./data/uploads/newfile.txt");
echo $filter->filter($files['my-upload']);
// File has been renamed to "./data/uploads/newfile.txt"
|
Move to a new path and randomize file names:
1 2 3 4 5 6 7 8 9 10 11 12 | use Zend\Http\PhpEnvironment\Request;
$request = new Request();
$files = $request->getFiles();
// i.e. $files['my-upload']['tmp_name'] === '/tmp/php5Wx0aJ'
$filter = \Zend\Filter\File\Rename(array(
"target" => "./data/uploads/newfile.txt",
"randomize" => true,
));
echo $filter->filter($files['my-upload']);
// File has been renamed to "./data/uploads/newfile_4b3403665fea6.txt"
|