sambenne / laravel-zip
laravel-zip 是全球领先的文件压缩和备份的 zip 工具。
v1.0.0
2019-06-15 10:35 UTC
Requires
- php: >=7.0.0
This package is auto-updated.
Last update: 2024-09-15 22:57:29 UTC
README
这是 ZanySoft/laravel-zip 的更新版本 ZanySoft/laravel-zip
laravel-zip 是全球领先的文件压缩和备份的 zip 工具。
这个库是为了简化并自动化使用 PHP ZipArchive 来管理 Zip 文件而编写的。
安装
在 composer.json 中要求此包并更新 composer。这将下载该包。
composer require sambenne/laravel-zip
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组中
SamBenne\Zip\ZipServiceProvider::class,
您可以选择使用外观来缩短代码。将其添加到您的外观中
'Zip' => SamBenne\Zip\ZipFacade::class,
Zip 使用
仅使用 SamBenne\Zip\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
// 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 使用
\SamBenne\Zip\ZipManager
可以处理多个 SamBenne\Zip\Zip
对象。
- 在顶部包含 Zip 和 ZipManager 类
use SamBenne\Zip\ZipManager; use Zip;
基本操作
-
初始化管理器并注册 Zips
// 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();