wamania / zip-streamed-response-bundle
A symfony Response to build and stream Zip on the fly
Installs: 78 146
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 2
Forks: 5
Open Issues: 2
Type:symfony-bundle
Requires
- php: >=5.3.3
- symfony/framework-bundle: >=2.5
This package is auto-updated.
Last update: 2024-11-09 13:28:20 UTC
README
Largely inspired by ZipStream-PHP, PHPZip and of course, the ZIP specifications.
Installation
Require wamania/zip-streamed-response-bundle
into your composer.json
file:
{ "require": { "wamania/zip-streamed-response-bundle": "dev-master" } }
Register the bundle in app/AppKernel.php
:
// app/AppKernel.php public function registerBundles() { return array( // ... new Wamania\ZipStreamedResponseBundle\ZipStreamedResponseBundle(), ); }
Usage
In your controller :
// .... use Wamania\ZipStreamedResponseBundle\Response\ZipStreamer\ZipStreamer; use Wamania\ZipStreamedResponseBundle\Response\ZipStreamer\ZipStreamerFile; use Wamania\ZipStreamedResponseBundle\Response\ZipStreamer\ZipStreamerBigFile; use Wamania\ZipStreamedResponseBundle\Response\ZipStreamedResponse; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction() { $zipStreamer = new ZipStreamer('test.zip'); // Auto switch files above switchAboveSize to "big files" ZipStreamer::setAutoSwitch(false/true); // default = true // If autoSwitch==true, files above $switchAboveSize will switch to "big files" ZipStreamer::setSwitchAboveSize(16777216); // default = 16Mb // For big file, size of the buffer for fread ZipStreamerBigFile::setBufferSize(1048576); //default = 1Mb // first string is localpath on hdd, second is pathname in zip $zipStreamer->add( '/home/wamania/photo.jpg', 'images/photo.jpg'); // you can send directly a ZipStreamerFile object $zipStreamer->add( new ZipStreamerFile( '/home/wamania/movie.mp4', 'movies/movie.mp4')); // Big files are send by stream instead of being charged whole in RAM // Big files are NOT compressed $zipStreamer->addBigFile( '/home/wamania/another-big-movie.mp4', 'movies/another-big-movie.mp4'); // or, directly send a ZipStreamerBigFile object $zipStreamer->add( new ZipStreamerBigFile( '/home/wamania/the-big-movie.mp4', 'movies/the-big-movie.mp4')); return new ZipStreamedResponse($zipStreamer); } }