zanysoft/laravel-zip
, (*1)
laravel-zip is the world's leading zip utility for file compression and backup., (*2)
This library was written to simplify and automate Zip files management using PHP ZipArchive., (*3)
Installation
Require this package in your composer.json and update composer. This will download the package., (*4)
composer require zanysoft/laravel-zip
After updating composer, add the ServiceProvider to the providers array in config/app.php, (*5)
ZanySoft\Zip\ZipServiceProvider::class,
You can optionally use the facade for shorter code. Add this to your facades:, (*6)
'Zip' => ZanySoft\Zip\Facades\Zip::class,
Zip usage
use ZanySoft\Zip\Zip class only use Zip is made to handle a zip file., (*7)
- include the Zip class at top:
use Zip;
Basic operations
-
Open zip file:, (*8)
$zip = Zip::open('file.zip');
-
Create zip file:, (*9)
$zip = Zip::create('file.zip');
-
Check zip file:, (*10)
$is_valid = Zip::check('file.zip');
-
Extract zip file:, (*11)
// extract whole archive
$zip->extract('/path/to/uncompressed/files');
// extract a file
$zip->extract('/path/to/uncompressed/files', 'file');
// extract multiple files
$zip->extract('/path/to/uncompressed/files', array('file1','file2'));
-
Check if zip has a file:, (*12)
// Check if archive has a file
$zip->has('/path/to/file/in/archive');
// Check if archive has a file case insensitively
$zip->has('/path/to/file/in/archive', ZipArchive::FL_NOCASE);
// Check if archive has a file ignoring directory component
$zip->has('file', ZipArchive::FL_NODIR);
// Check if archive has a file case insensitively ignoring directory component
$zip->has('file', ZipArchive::FL_NOCASE|ZipArchive::FL_NODIR);
-
Add a file/directory to zip:, (*13)
$zip->add('/path/to/my/file');
// declaring path
$zip->setPath('/path/to/my')->add('file');
// add directory
$zip->add('/path/to/my/directory');
// add directory (only its content)
$zip->add('/path/to/my/directory', true);
-
Add content to zip:, (*14)
$zip->addFromString('file name with extension', 'content of file');
$zip->addFromString('filename.txt', $file_content);
$zip->addFromString('folder/file1.txt', $file_content);
$zip->addFromString('folder/file2.txt', $file_content);
-
Add multiple files/directories to zip:, (*15)
// using array as parameter
$zip->add( array('/path/to/my/file1', '/path/to/my/file2');
// chaining methods
$zip->add('/path/to/my/file1')->add('/path/to/my/file2');
// declaring path
$zip->setPath('/path/to/my')->add('file1')->add('file2');
-
Delete a file/directory from zip:, (*16)
$zip->delete('file');
-
Delete multiple files/directories from zip:, (*17)
// using array as parameter
$zip->delete( array('file1', 'file2') );
// chaining methods
$zip->delete('file1')->delete('file2');
-
List content of zip file, (*18)
$zip->listFiles();
-
Close zip file, (*19)
$zip->close();
Additional methods
-
Skip hidden files while adding directories:, (*20)
// set mode
$zip->setSkipped('HIDDEN');
// get mode
$mode = $zip->getSkipped();
-
Use password for zip extraction:, (*21)
// set password
$zip->setPassword('slartibartfast');
// get password
$password = $zip->getPassword();
-
Use a mask != 0777 for created folders:, (*22)
// set mask
$zip->setMask(0644);
// get mask
$mask = $zip->getMask();
ZipManager usage
The \ZanySoft\Zip\ZipManager can handle multiple ZanySoft\Zip\Zip objects., (*23)
- include the Zip and ZipManager class at top:
use ZanySoft\Zip\ZipManager;
use Zip;
Basic operations
-
Init the manager and register Zips:, (*24)
// init manager
$manager = new ZipManager();
// register existing zips
$manager->addZip( Zip::open('/path/to/my/file1.zip') )
->addZip( Zip::open('/path/to/my/file2.zip') );
// register a new zip
$manager->addZip( Zip::create('/path/to/my/file3.zip') );
-
Basic zips management:, (*25)
// get a list of registered zips
$list = $manager->listZips();
// remove a zip
$manager->removeZip($ZipObject);
// get a Zip
$zip = $manager->getZip(0);
-
Add files to all zips:, (*26)
$manager = new ZipManager();
// register existing zips
$manager->addZip( Zip::open('/path/to/my/file1.zip') )
->addZip( Zip::open('/path/to/my/file2.zip') );
// register a new zip
$manager->addZip( Zip::create('/path/to/my/file3.zip') );
-
Extract zips:, (*27)
// separate content in folders
$extract = $manager->extract('/path/to/uncompressed/files', true);
// use a single folder
$extract = $manager->extract('/path/to/uncompressed/files', false);
// extract single file
$extract = $manager->extract('/path/to/uncompressed/files', false, 'file');
// extract multiple files
$extract = $manager->extract('/path/to/uncompressed/files', false, array('file1','file2'));
-
Merge zips:, (*28)
// separate content in folders
$manager->merge('/path/to/output/file.zip', true);
// flatten files
$manager->merge('/path/to/output/file.zip', false);
-
Close zips:, (*29)
$manager->close();
Additional methods
-
Declare path from which add files:, (*30)
// set path
$zip->setPath('/path/to/files');
// get path
$path = $zip->getPath();
-
Use a mask != 0777 for created folders, (*31)
// set masks
$manager->setMask(0644);
// get masks
$mask = $manager->getMask();