时间:2020-12-17 09:28:13
将图片或文档按要求打包并下载
一个用于PHP的快速简单的流式压缩文件下载器。使用这个库可以省去将Zip文件写入磁盘的麻烦。你可以直接发送给用户,这要快得多。它可以与S3桶或任何PSR7流一起工作。
-
安装
composer require maennchen/zipstream-php
打包并下载(官方例子)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // Autoload the dependencies require 'vendor/autoload.php' ; // enable output of HTTP headers $options = new ZipStream\Option\Archive(); $options ->setSendHttpHeaders(true); // create a new zipstream object $zip = new ZipStream\ZipStream( '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(); |
打包并生成到文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // Autoload the dependencies require 'vendor/autoload.php' ; $local_path = '临时目录' ; $zipName = '文件名.zip' ; file_put_contents ( $local_path . $zipName , '' ); // 创建一个zip文件 $zipOption = new Archive(); $zipOption ->setOutputStream( fopen ( $local_path . $zipName , 'w+' )); $zip = new ZipStream(null, $zipOption ); // 文件 $file_name = 'xxx.docx' ; $zip ->addFileFromPath( $file_name , '本地文件全路径' ); // 路径+文件 $file_name = 'test/xxx.docx' ; $zip ->addFileFromPath( $file_name , '本地文件全路径' ); // 文件流形式加入 $zip ->addFile( $file_name , $files [ 'contents' ]); //完成 $zip ->finish(); |