igorw / file-serve-bundle
Symfony2 Bundle for serving protected files.
Installs: 152 902
Dependents: 0
Suggesters: 0
Security: 0
Stars: 167
Watchers: 10
Forks: 17
Open Issues: 5
Type:symfony-bundle
Requires
Requires (Dev)
Suggests
This package is not auto-updated.
Last update: 2024-10-26 12:28:37 UTC
README
About
The FileServeBundle allows you to serve files that are not publicly available, such as private attachments.
Installation
Add the bundle to your composer.json
:
{ "require": { "igorw/file-serve-bundle": "~1.0" } }
Add the FileServeBundle to your application's kernel:
public function registerBundles() { $bundles = array( // ... new Igorw\FileServeBundle\IgorwFileServeBundle(), // ... ); // ... }
Usage
Use the igorw_file_serve.response_factory
service to create a FileServe
response. The path is relative to the app
directory by default.
$response = $this->get('igorw_file_serve.response_factory')->create('../VERSION', 'text/plain');
You can also pass a set of options as the third parameter of the create
method.
$options = array( 'serve_filename' => 'VERSION.txt', 'absolute_path' => true, 'inline' => false, ); $response = $this->get('igorw_file_serve.response_factory') ->create('../VERSION', 'text/plain', $options);
- serve_filename: Filename the browser downloads the file as.
- absolute_path: If enabled, the bundle will ignore the
base_dir
option and use the provided filename as an absolute path.
You can configure the factory used, for example to use a nginx XSendfile response factory:
igorw_file_serve: factory: sendfile # The default value is "php"
You can also configure the base directory:
igorw_file_serve: base_dir: /files/dir # The default value is "%kernel.root_dir%"
By default, this bundle does a file_exists
check when creating a response
object. Recent nginx versions require relative paths, in which case the paths
inside of PHP are not actual physical paths. Use the skip_file_exists
setting to disable the check.
igorw_file_serve: skip_file_exists: true # The default value is false
Supported factories
php
sendfile
(nginx)xsendfile
(apache)
Features
- Incremental serving of large files
- Nginx XSendfile
- Apache mod_xsendfile
Todo
- Tests
- HTTP caching
- HTTP range requests
- Lighttpd XSendfile
- Handle PhpResponse getContent(), setContent()