downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ZipArchive::addEmptyDir> <Examples
Last updated: Fri, 24 Sep 2010

view this page in

The ZipArchive class

Introduction

A file archive, compressed with Zip.

Class synopsis

ZipArchive {
/* Properties */
/* Methods */
bool addEmptyDir ( string $dirname )
bool addFile ( string $filename [, string $localname ] )
bool addFromString ( string $localname , string $contents )
bool close ( void )
bool deleteIndex ( int $index )
bool deleteName ( string $name )
bool extractTo ( string $destination [, mixed $entries ] )
string getArchiveComment ( void )
string getCommentIndex ( int $index [, int $flags ] )
string getCommentName ( string $name [, int $flags ] )
mixed getFromIndex ( int $index [, int $flags ] )
mixed getFromName ( string $name [, int $flags ] )
string getNameIndex ( int $index )
string getStatusString ( void )
resource getStream ( string $name )
mixed locateName ( string $name [, int $flags ] )
mixed open ( string $filename [, int $flags ] )
bool renameIndex ( int $index , string $newname )
bool renameName ( string $name , string $newname )
mixed setArchiveComment ( string $comment )
mixed setCommentIndex ( int $index , string $comment )
mixed setCommentName ( string $name , string $comment )
mixed statIndex ( int $index [, int $flags ] )
mixed statName ( name $name [, int $flags ] )
mixed unchangeAll ( void )
mixed unchangeArchive ( void )
mixed unchangeIndex ( int $index )
mixed unchangeName ( string $name )
}

Properties

status

Status of the Zip Archive

statusSys

System status of the Zip Archive

numFiles

Number of files in archive

filename

File name in the file system

comment

Comment for the archive

Table of Contents



add a note add a note User Contributed Notes
ZipArchive
hardcorevenom at gmx dot com
16-Jun-2010 12:17
Read a file from an archive to a variable.
A warning is printed automatically in case of a CRC32 mismatch, which we capture, so we can print our own error message.

<?php
$zip
= new ZipArchive();
if (
$zip->open('archive.zip')) {
 
$fp = $zip->getStream('myfile.txt'); //file inside archive
 
if(!$fp)
    die(
"Error: can't get stream to zipped file");
 
$stat = $zip->statName('myfile.txt');

 
$buf = ""; //file buffer
 
ob_start(); //to capture CRC error message
   
while (!feof($fp)) {
     
$buf .= fread($fp, 2048); //reading more than 2156 bytes seems to disable internal CRC32 verification (bug?)
   
}
   
$s = ob_get_contents();
 
ob_end_clean();
  if(
stripos($s, "CRC error") != FALSE){
    echo
'CRC32 mismatch, current ';
   
printf("%08X", crc32($buf)); //current CRC
   
echo ', expected ';
   
printf("%08X", $stat['crc']); //expected CRC
 
}

 
fclose($fp);
 
$zip->close();
 
//Done, unpacked file is stored in $buf
}
?>

To create a corrupt file, change a byte in a zip file using a hex editor.

ZipArchive::addEmptyDir> <Examples
Last updated: Fri, 24 Sep 2010
 
 
show source | credits | sitemap | contact | advertising | mirror sites