zanysoft/laravel-zip

laravel-zip 是全球领先的文件压缩和备份的 zip 工具。

2.0.4 2023-02-16 05:33 UTC

This package is auto-updated.

Last update: 2024-08-30 01:07:59 UTC


README

Downloads GitHub license Maintenance GitHub tag

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();