©
本文档使用 PHP中文网手册 发布
(PHP 5 >= 5.2.0, PECL zip >= 1.1.0)
ZipArchive::getStream — Get a file handler to the entry defined by its name (read only).
$name
)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
.
Example #1 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" ;
}
?>
Example #2 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" ;
?>
Example #3 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' );
?>
[#1] Anonymous [2011-08-18 05:06:38]
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.