jdwil / zip-stream
0.1.3
2018-08-22 13:24 UTC
Requires
- php: ^7
Requires (Dev)
- peridot-php/leo: ^1.6
- phpspec/phpspec: ^3.2
This package is not auto-updated.
Last update: 2024-09-29 02:50:28 UTC
README
此库用于生成具有低内存占用的大型zip文件。zip文件的内容不会被一次性存储在内存中。所有内容都通过流进行写入。此库仅用于写入zip文件,没有读取功能。
许可证
MIT许可证
入门指南
所需条件仅为PHP 7.0+和zlib扩展(几乎总是启用)。
安装
composer require jdwil/zip-stream
运行测试
./vendor/bin/phpspec run
示例
基本用法
$zipStream = ZipStream::forFile('/path/to/file.zip');
// Add a file from disk
$zipStream->addFileFromDisk('foo.txt', '/path/to/foo.txt');
// Add a file from a stream
$stream = ReadStream::forFile('/path/to/bar.txt');
$zipStream->addFileFromStream('bar.txt', $stream);
// Add arbirary data
$zipStream->addFile('baz.txt', 'some arbitrary text');
// Always close the Zip Stream
$zipStream->close();
处理大量数据集
$zipStream = ZipStream::forFile('/path/to/file.zip');
$zipStream->beginFile('foo.txt');
while ($data = $somePdoStatement->fetch()) {
$zipStream->addFilePart(implode(',', $data));
}
$zipStream->endFile();
$zipStream->close();
直接将ZIP文件流式传输给用户
文件在构建的同时发送,因此用户可以立即开始下载。
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="foo.zip"');
header('Content-Transfer-Encoding: binary');
$zipStream = ZipStream::forFile('php://output');
// Build your zip file
$zipStream->close();
作者
JD Williams me@jdwilliams.xyz