Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
Downloads
/
vfm-admin
/
assets
/
zipstream
/
phpzip
/
phpzip
/
src
/
Zip
/
Stream
:
ZipStream.php
Voltar
Back Up
Advanced Editor
Save
<?php /** * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos * * This class serves as a concrete zip stream archive. * */ namespace PHPZip\Zip\Stream; use PHPZip\Zip\Core\AbstractZipArchive; class ZipStream extends AbstractZipArchive { const STREAM_CHUNK_SIZE = 16384; // 16 KB private $maxStreamBufferLength = 1048576; /** * Constructor. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos * * @param String $fileName The name of the Zip archive, in ISO-8859-1 (or ASCII) encoding, ie. "archive.zip". Optional, defaults to NULL, which means that no ISO-8859-1 encoded file name will be specified. * @param String $contentType Content mime type. Optional, defaults to "application/zip". * @param String $utf8FileName The name of the Zip archive, in UTF-8 encoding. Optional, defaults to NULL, which means that no UTF-8 encoded file name will be specified. * @param bool $inline Use Content-Disposition with "inline" instead of "attached". Optional, defaults to FALSE. * * @throws \PHPZip\Zip\Exception\BufferNotEmpty, HeadersSent, IncompatiblePhpVersion, InvalidPhpConfiguration In case of errors */ public function __construct($fileName = '', $contentType = self::CONTENT_TYPE, $utf8FileName = null, $inline = false) { parent::__construct(self::STREAM_CHUNK_SIZE); $this->buildResponseHeader($fileName, $contentType, $utf8FileName, $inline); } /** * Destructor. * Perform clean up actions. * Please note that frameworks are absolutely prohibited from sending ANYTHING to the output after the Zip is sent. * * @author A. Grandt <php@grandt.com> */ public function __destruct(){ $this->isFinalized = true; $this->cdRec = null; } /* * ************************************************************************ * Superclass callbacks. * ************************************************************************ */ /** * Called by superclass when specialised action is needed * while building a zip entry. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos * * @param array $params Array that contains zipEntry. */ public function onBuildZipEntry(array $params){ print($params['zipEntry']); } /** * Called by superclass when specialised action is needed * at the start of adding a file to the archive. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos * * @param array $params Array that contains gzLength. */ public function onBeginAddFile(array $params){ // Do nothing. } /** * Called by superclass when specialised action is needed * at the end of adding a file to the archive. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos * * @param array $params Array that contains gzData. */ public function onEndAddFile(array $params){ print($params['gzData']); } /** * Called by superclass when specialised action is needed * at the start of sending the zip stream response header. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos */ public function onBeginBuildResponseHeader(){ // Do nothing. } /** * Called by superclass when specialised action is needed * at the end of sending the zip stream response header. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos */ public function onEndBuildResponseHeader(){ //header("Connection: Keep-Alive"); $this->zipFlushBuffer(); } /** * Called by superclass when specialised action is needed * while opening a stream. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos */ public function onOpenStream(){ // Do nothing. } /** * Called by superclass when specialised action is needed * while processing a file. * * @author A. Grandt <php@grandt.com> * @author Greg Kappatos * * @param array $params Array that contains data. */ public function onProcessFile(array $params){ print($params['data']); $this->zipFlushBuffer(); } /** * Verify if the memory buffer is about to be exceeded. * * @author A. Grandt <php@grandt.com> * * @param int $gzLength length of the pending data. */ public function zipVerifyMemBuffer($gzLength) { if (ob_get_length() !== FALSE && ob_get_length() > $this->maxStreamBufferLength) { ob_flush(); while (ob_get_length() > $this->maxStreamBufferLength) { usleep(500000); } } } /** * * @author A. Grandt <php@grandt.com> * * @param string $data */ public function zipWrite($data) { print($data); } /** * Flush Zip Data stored in memory, to a temp file. * * @author A. Grandt <php@grandt.com> * */ public function zipFlush() { // Does nothing. } /** * * @author A. Grandt <php@grandt.com> * */ public function zipFlushBuffer() { flush(); $this->zipVerifyMemBuffer(0); } /** * @return int */ public function getMaxStreamBufferLength() { return $this->maxStreamBufferLength; } /** * @param int $maxStreamBufferLength */ public function setMaxStreamBufferLength($maxStreamBufferLength) { $this->maxStreamBufferLength = $maxStreamBufferLength; } }