originphp / zip
OriginPHP Zip
2.0.0
2021-01-04 09:10 UTC
Requires
- php: >=7.3.0
- ext-zip: *
Requires (Dev)
- phpstan/phpstan: ^0.12.64
- phpunit/phpunit: ^9.2
README
一个用于创建和解压 ZIP 文件的 ZIP 工具。
安装
要安装此包
$ composer require originphp/zip
静态方法
静态方法提供了一个快速压缩和解压存档的方法。
创建 ZIP 存档
要使用文件或目录创建 ZIP 存档
Zip::zip(__DIR__ .'/src','/backups/today.zip');
您还可以压缩多个文件或目录
Zip::zip([ 'README.md', __DIR__ .'/src' ],'/backups/today.zip');
您还可以传递以下任何选项键
- password: 用于加密存档的密码
- compress: 默认:
true。设置为false仅存储文件(不进行压缩) - encryption: 默认:
aes256。这是使用密码时使用的加密方法。支持的加密方法:aes128、aes192和aes256。
要使用密码加密文件,您需要使用 PHP 7.3 或更高版本。
Zip::zip(__DIR__ .'/src','/backups/today.zip',[ 'password'=>'passw0rd' ]);
解压 ZIP 存档
要解压 ZIP 文件
Zip::unzip('/backups/today.zip','/a/folder');
如果任何文件被加密,您提供密码如下
Zip::unzip('/backups/today.zip','/a/folder',[ 'password' => 'passw0rd' ]);
流畅接口
ZIP 类还提供了用于处理 ZIP 存档的流畅接口。
创建 ZIP 存档
要创建新的 ZIP 和文件以及目录。当您添加目录时,它将递归地添加所有文件和子目录。
$zip = new Zip(); $zip->create('/path/to/file.zip') ->add('README.md') ->add('src') ->save();
加密
要使用密码加密文件,您需要使用 PHP 7.3 或更高版本。
要加密存档中的所有文件,在添加文件后调用 encrypt 方法,您可以选择提供加密方法。支持的加密方法有 aes128、aes192 和 aes256。
$zip = new Zip(); $zip->create('/path/to/file.zip') ->add('README.md') ->add('src') ->encrypt('passw0rd') ->save();
如果您只想加密某些文件
$zip = new Zip(); $zip->create('/path/to/file.zip') ->add('README.md') ->add('Financials.xlsx',['password' => 'secret']) ->save();
压缩
如果您只想将文件存储在 ZIP 存档中而不进行压缩,可以将 compress 设置为 false。
$zip = new Zip(); $zip->create('/path/to/file.zip') ->add('logo.jpg',['compress'=>false]) ->save();
解压 ZIP 存档
从 ZIP 文件中提取文件
$zip = new Zip(); $zip->open('/path/to/file.zip') ->extract('/destination/folder')
如果 ZIP 文件有加密文件
$zip = new Zip(); $zip->open('/path/to/file.zip') ->extract('/destination/folder',['password'=>'foo']);
您还可以提取所选文件
$zip = new Zip(); $zip->open('/path/to/file.zip') ->extract('/destination/folder',[ 'files'=>[ 'README.md', 'LICENSE.md' ] ]);
列出内容
要列出 ZIP 文件的内容
$zip = new Zip(); $list = $zip->open('/path/to/file.zip') ->list();
这将输出如下
Array
(
[0] => Origin\Zip\FileObject Object
(
[name] => README.md
[size] => 666
[timestamp] => 1576656596
[compressedSize] => 371
[encrypted] => 1
)
)
您还可以仅列出 ZIP 文件文件夹内的文件
$zip = new Zip(); $testFiles = $zip->open('/path/to/file.zip') ->list('tests');
获取文件内容
要获取文件内容
$zip = new Zip(); $contents = $zip->open('/path/to/file.zip') ->get('README.md');
重命名
要在 ZIP 存档中重命名文件
$zip = new Zip(); $zip->open('/path/to/file.zip') ->rename('foo.txt','bar.txt');
删除文件
要从 ZIP 存档中删除文件
$zip = new Zip(); $zip->open('/path/to/file.zip') ->delete('tests/ControllerTest.php');