juniora / laravel-zip
laravel-zip 是世界上领先的文件压缩和备份的 zip 工具。
2.0.5
2024-05-06 18:37 UTC
Requires
- php: >=7.4
- ext-zip: *
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.24
- phpunit/phpunit: ^9.5
- scrutinizer/ocular: ^1.9
This package is not auto-updated.
Last update: 2024-09-24 18:30:00 UTC
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 文件。
- 在顶部包含 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();