目录搜索
文字
分享

ZipArchive::getStream

(PHP 5 >= 5.2.0, PECL zip >= 1.1.0)

ZipArchive::getStreamGet a file handler to the entry defined by its name (read only).

说明

resource ZipArchive::getStream ( string $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.

上一篇:下一篇: