igorw/file-serve-bundle

Symfony2 Bundle for serving protected files.

Maintainers

👁 igorw

Package info

github.com/igorw/IgorwFileServeBundle

Type:symfony-bundle

pkg:composer/igorw/file-serve-bundle

Statistics

Installs: 157 287

Dependents: 1

Suggesters: 0

Stars: 164

Open Issues: 5

v1.0.3 2014-01-06 20:35 UTC

Requires

Requires (Dev)

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 844688877af17556189bb570c2c00ec434fd04bd

file-systemsendfile

This package is not auto-updated.

Last update: 2026-06-20 20:14:47 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

Todo

  • Tests
  • HTTP caching
  • HTTP range requests
  • Lighttpd XSendfile
  • Handle PhpResponse getContent(), setContent()