2.0.0 2021-01-04 09:10 UTC

This package is auto-updated.

Last update: 2024-09-04 16:55:19 UTC


README

license build coverage

一个用于创建和解压 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。这是使用密码时使用的加密方法。支持的加密方法: aes128aes192aes256

要使用密码加密文件,您需要使用 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 方法,您可以选择提供加密方法。支持的加密方法有 aes128aes192aes256

$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');