ZipArchive::getStream()
(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)
Get a file handler to the entry defined by its name(read only)
说明
ZipArchive::getStream(string $name): resource
Get a file handler to the entry defined by its name. For now it only supports read operations.
参数
- $name
The name of the entry to use.
返回值
Returns a file pointer(resource)on success 或者在失败时返回FALSE
.
范例
Get the entry contents with fread() and store it
<?php $contents = ''; $z = new ZipArchive(); if ($z->open('test.zip')) { $fp = $z->getStream('test'); if(!$fp) exit("failed\n"); while (!feof($fp)) { $contents .= fread($fp, 2); } fclose($fp); file_put_contents('t',$contents); echo "done.\n"; } ?>
Same as the previous example but with fopen() and the zip stream wrapper
<?php $contents = ''; $fp = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r'); if (!$fp) { exit("cannot open\n"); } while (!feof($fp)) { $contents .= fread($fp, 2); } echo "$contents\n"; fclose($fp); echo "done.\n"; ?>
Stream wrapper and image, can be used with the xml function as well
<?php $im = imagecreatefromgif('zip://' . dirname(__FILE__) . '/test_im.zip#pear_item.gif'); imagepng($im, 'a.png'); ?>
I experienced problems using fread to read the content of the zip when the file was PDF. Using stream_get_contents instead solved the problem.