FileUtilityBundle
-, (*1)
This bundle aims to help management of files that were sent thought the form., (*2)
Symfony2 does a great job with converting raw file data into UploadedFile object and the goal of this bundle is to further extend it., (*3)
Installation (via composer)
To install FileUtilityBundle with Composer just add the following to your composer.json file:, (*4)
{
// ...
require: {
"exploring/fileutility": "dev-master"
}
}
Please replace the "dev-master" with some concrete release., (*5)
Then run:, (*6)
php composer.phar update
And register the bundle within AppKernel.php, (*7)
$bundles = array(
....
new Exploring\FileUtilityBundle\ExploringFileUtilityBundle(),
);
You are all set., (*8)
Configuration
The bundle uses several configutaion entries. However, the minimalistic configuation should look like:, (*9)
exploring_file_utility:
upload_root: %kernel.root_dir%/../web/uploads
All file are uploaded to a specific subdirectory of upload_root path. You can have as many subdirectories as you like., (*10)
You can read full configuration reference here., (*11)
Notice: Concept of directory "alias" has been removed in v2.0. Directories are now auto discovered during the warm up process. If you instantiate FileManager manually, you can still set available directories., (*12)
Advice: Either keep your upload root diretory out of web public directory or ensure proper access rights to file stored there in order to avoid execution of files uploaded., (*13)
Basic usage
You need to use service names exploring_file_utility.manager in order to gain access to FileManager:, (*14)
$file = ...; // instance of UploadedFile
$fileManager = $this->get('exploring_file_utility.manager');
$fileDescriptor = $fileManager->save($file, 'foo');
$fileManager->commit();
The example above takes some arbitrary file and, given the configuration above, uploads it to /path/to/symfonyapp/web/uploads/foo., (*15)
FileManager's operations are transaction based. That means that any changes made to the file-system will be reverted back unless you callcommit():, (*16)
You can invoke rollback() to revert any changes as well at any time:, (*17)
$fileManager->rollback();
Examples
Various examples, both simple and advances, can be found in example document, (*18)
Image manipulations
This bundle comes with some image manipulations operations built-in. Complete documentation on those can be found here, (*19)