laoqianjunzi / zip
zip是一个用于在服务器上完全不写入磁盘的情况下动态流式传输动态zip文件的PHP库。
1.0
2023-10-16 05:48 UTC
Requires
- php: >= 7.1
- myclabs/php-enum: ^1.5
- psr/http-message: ^1.0
- symfony/polyfill-mbstring: ^1.0
Requires (Dev)
- ext-zip: *
This package is not auto-updated.
Last update: 2024-10-01 09:01:04 UTC
README
PclZip定义了一个PclZip类别,其类实例可以视为一个ZIP档案,并提供了方法来进行处理。
概述
一个快速的简单的PHP流式下载zip文件的工具。使用这个库可以避免将Zip文件写入磁盘。您可以直接将其发送给用户,这要快得多。它可以与S3存储桶或任何PSR7流一起工作。
安装
如果您使用Composer管理项目的依赖项,只需在项目的composer.json文件中添加对laoqianjunzi/zip的依赖即可。使用以下命令将包添加到项目的依赖项中:
composer require laoqianjunzi/zip
使用方法和选项
这里有一个简单的示例
// Autoload the dependencies
require 'vendor/autoload.php';
// enable output of HTTP headers
$options = new zip\Option\Archive();
$options->setSendHttpHeaders(true);
// create a new zip object
$zip = new zip\zip('example.zip', $options);
// create a file named 'hello.txt'
$zip->addFile('hello.txt', 'This is the contents of hello.txt');
// add a file named 'some_image.jpg' from a local file 'path/to/image.jpg'
$zip->addFileFromPath('some_image.jpg', 'path/to/image.jpg');
// add a file named 'goodbye.txt' from an open stream resource
$fp = tmpfile();
fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
rewind($fp);
$zip->addFileFromStream('goodbye.txt', $fp);
fclose($fp);
// finish the zip stream
$zip->finish();
您还可以添加注释、修改文件时间戳,并自定义(或禁用)HTTP头。在添加文件时也可以指定存储方法,当前默认的存储方法是'deflate',即文件以压缩模式0x08存储。