zanysoft / laravel-zip
laravel-zip 是全球领先的文件压缩和备份的 zip 工具。
2.0.4
2023-02-16 05:33 UTC
Requires
- php: >=7.4
- ext-zip: *
- illuminate/support: ^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^6.24
- phpunit/phpunit: ^9.5
- scrutinizer/ocular: ^1.9
README
laravel-zip 是全球领先的文件压缩和备份的 zip 工具。
这个库是为了简化并自动化使用 PHP ZipArchive 进行 Zip 文件管理而编写的。
安装
在 composer.json 中要求此包并更新 composer。这将下载此包。
composer require zanysoft/laravel-zip
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组中
ZanySoft\Zip\ZipServiceProvider::class,
您可以选择使用外观来缩短代码。将其添加到您的外观中
'Zip' => ZanySoft\Zip\Facades\Zip::class,
Zip 使用
仅使用 ZanySoft\Zip\Zip
类来处理 zip 文件。
- 在顶部包含 Zip 类
use Zip;
基本操作
-
打开 zip 文件
$zip = Zip::open('file.zip');
-
创建 zip 文件
$zip = Zip::create('file.zip');
-
检查 zip 文件
$is_valid = Zip::check('file.zip');
-
解压 zip 文件
// 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'));
-
检查 zip 是否有文件
// 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);
-
将文件/目录添加到 zip
$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);
-
将内容添加到 zip
$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);
-
将多个文件/目录添加到 zip
// 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');
-
从 zip 中删除文件/目录
$zip->delete('file');
-
从 zip 中删除多个文件/目录
// using array as parameter $zip->delete( array('file1', 'file2') ); // chaining methods $zip->delete('file1')->delete('file2');
-
列出 zip 文件的内容
$zip->listFiles();
-
关闭 zip 文件
$zip->close();
附加方法
-
在添加目录时跳过隐藏文件
// set mode $zip->setSkipped('HIDDEN'); // get mode $mode = $zip->getSkipped();
-
为 zip 解压使用密码
// set password $zip->setPassword('slartibartfast'); // get password $password = $zip->getPassword();
-
为创建的目录使用 != 0777 的掩码
// set mask $zip->setMask(0644); // get mask $mask = $zip->getMask();
ZipManager 使用
\ZanySoft\Zip\ZipManager
可以处理多个 ZanySoft\Zip\Zip
对象。
- 在顶部包含 Zip 和 ZipManager 类
use ZanySoft\Zip\ZipManager; use Zip;
基本操作
-
初始化管理器并注册 Zip
// 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') );
-
基本 zip 管理
// get a list of registered zips $list = $manager->listZips(); // remove a zip $manager->removeZip($ZipObject); // get a Zip $zip = $manager->getZip(0);
-
将文件添加到所有 zip
$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') );
-
解压 zip
// 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'));
-
合并 zip
// separate content in folders $manager->merge('/path/to/output/file.zip', true); // flatten files $manager->merge('/path/to/output/file.zip', false);
-
关闭 zip
$manager->close();
附加方法
-
声明添加文件的路径
// set path $zip->setPath('/path/to/files'); // get path $path = $zip->getPath();
-
为创建的目录使用 != 0777 的掩码
// set masks $manager->setMask(0644); // get masks $mask = $manager->getMask();