<?php$zip = zip_open("/tmp/test2.zip");if ($zip) { while ($zip_entry = zip_read($zip)) {
echo "Name: " . zip_entry_name($zip_entry) . "\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n"; if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:\n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$buf\n"; zip_entry_close($zip_entry);
}
echo "\n"; } zip_close($zip);}?>
echo "Name: " . zip_entry_name($zip_entry) . "\n";
echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n"; if (zip_entry_open($zip, $zip_entry, "r")) {
echo "File Contents:\n";
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
echo "$buf\n"; zip_entry_close($zip_entry);
}
echo "\n"; } zip_close($zip);}?>
"/usr/local/bin/" 为unzip安装目录
"/usr/local/bin/" 为unzip安装目录虛擬主機怎么辦?
// 2003-12-02 - HB >
var $Comment = '';
// 2003-12-02 - HB < var $Entries = array(); var $Name = ''; var $Size = 0; var $Time = 0; function SimpleUnzip($in_FileName = '') {
if($in_FileName !== '') {
SimpleUnzip::ReadFile($in_FileName);
}
} // end of the 'SimpleUnzip' constructor function Count() {
return count($this->Entries);
} // end of the 'Count()' method function GetData($in_Index) {
return $this->Entries[$in_Index]->Data;
} // end of the 'GetData()' method function GetEntry($in_Index) {
return $this->Entries[$in_Index];
} // end of the 'GetEntry()' method function GetError($in_Index) {
return $this->Entries[$in_Index]->Error;
} // end of the 'GetError()' method function GetErrorMsg($in_Index) {
return $this->Entries[$in_Index]->ErrorMsg;
} // end of the 'GetErrorMsg()' method function GetName($in_Index) {
return $this->Entries[$in_Index]->Name;
} // end of the 'GetName()' method function GetPath($in_Index) {
return $this->Entries[$in_Index]->Path;
} // end of the 'GetPath()' method function GetTime($in_Index) {
return $this->Entries[$in_Index]->Time;
} // end of the 'GetTime()' method function ReadFile($in_FileName) {
$this->Entries = array(); // Get file parameters
$this->Name = $in_FileName;
$this->Time = filemtime($in_FileName);
$this->Size = filesize($in_FileName); // Read file
$oF = fopen($in_FileName, 'rb');
$vZ = fread($oF, $this->Size);
fclose($oF);// 2003-12-02 - HB >
// Cut end of central directory
$aE = explode("\x50\x4b\x05\x06", $vZ); // Easiest way, but not sure if format changes
//$this->Comment = substr($aE[1], 18); // Normal way
$aP = unpack('x16/v1CL', $aE[1]);
$this->Comment = substr($aE[1], 18, $aP['CL']); // Translates end of line from other operating systems
$this->Comment = strtr($this->Comment, array("\r\n" => "\n",
"\r" => "\n"));
// 2003-12-02 - HB < // Cut the entries from the central directory
$aE = explode("\x50\x4b\x01\x02", $vZ);
// Explode to each part
$aE = explode("\x50\x4b\x03\x04", $aE[0]);
// Shift out spanning signature or empty entry
array_shift($aE); // Loop through the entries
foreach($aE as $vZ) {
$aI = array();
$aI['E'] = 0;
$aI['EM'] = '';
// Retrieving local file header information
$aP = unpack('v1VN/v1GPF/v1CM/v1FT/v1FD/V1CRC/V1CS/V1UCS/v1FNL', $vZ);
// Check if data is encrypted
$bE = ($aP['GPF'] && 0x0001) ? TRUE : FALSE;
$nF = $aP['FNL']; // Special case : value block after the compressed data
if($aP['GPF'] & 0x0008) {
$aP1 = unpack('V1CRC/V1CS/V1UCS', substr($vZ, -12)); $aP['CRC'] = $aP1['CRC'];
$aP['CS'] = $aP1['CS'];
$aP['UCS'] = $aP1['UCS']; $vZ = substr($vZ, 0, -12);
} // Getting stored filename
$aI['N'] = substr($vZ, 26, $nF); if(substr($aI['N'], -1) == '/') {
// is a directory entry - will be skipped
continue;
} // Truncate full filename in path and filename
$aI['P'] = dirname($aI['N']);
$aI['P'] = $aI['P'] == '.' ? '' : $aI['P'];
$aI['N'] = basename($aI['N']); $vZ = substr($vZ, 26 + $nF); if(strlen($vZ) != $aP['CS']) {
$aI['E'] = 1;
$aI['EM'] = 'Compressed size is not equal with the value in header information.';
} else {
if($bE) {
$aI['E'] = 5;
$aI['EM'] = 'File is encrypted, which is not supported from this class.';
} else {
switch($aP['CM']) {
case 0: // Stored
// Here is nothing to do, the file ist flat.
break; case 8: // Deflated
$vZ = gzinflate($vZ);
break; case 12: // BZIP2
// 2003-12-02 - HB >
if(! extension_loaded('bz2')) {
if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
@dl('php_bz2.dll');
} else {
@dl('bz2.so');
}
} if(extension_loaded('bz2')) {
// 2003-12-02 - HB <
$vZ = bzdecompress($vZ);
// 2003-12-02 - HB >
} else {
$aI['E'] = 7;
$aI['EM'] = "PHP BZIP2 extension not available.";
}
// 2003-12-02 - HB < break; default:
$aI['E'] = 6;
$aI['EM'] = "De-/Compression method {$aP['CM']} is not supported.";
}// 2003-12-02 - HB >
if(! $aI['E']) {
// 2003-12-02 - HB <
if($vZ === FALSE) {
$aI['E'] = 2;
$aI['EM'] = 'Decompression of data failed.';
} else {
if(strlen($vZ) != $aP['UCS']) {
$aI['E'] = 3;
$aI['EM'] = 'Uncompressed size is not equal with the value in header information.';
} else {
if(crc32($vZ) != $aP['CRC']) {
$aI['E'] = 4;
$aI['EM'] = 'CRC32 checksum is not equal with the value in header information.';
}
}
}
// 2003-12-02 - HB >
}
// 2003-12-02 - HB <
}
} $aI['D'] = $vZ; // DOS to UNIX timestamp
$aI['T'] = mktime(($aP['FT'] & 0xf800) >> 11,
($aP['FT'] & 0x07e0) >> 5,
($aP['FT'] & 0x001f) << 1,
($aP['FD'] & 0x01e0) >> 5,
($aP['FD'] & 0x001f),
(($aP['FD'] & 0xfe00) >> 9) + 1980); $this->Entries[] = &new SimpleUnzipEntry($aI);
} // end for each entries return $this->Entries;
} // end of the 'ReadFile()' method
} // end of the 'SimpleUnzip' class
var $Data = ''; var $Error = 0; var $ErrorMsg = ''; var $Name = ''; var $Path = ''; var $Time = 0; function SimpleUnzipEntry($in_Entry) {
$this->Data = $in_Entry['D'];
$this->Error = $in_Entry['E'];
$this->ErrorMsg = $in_Entry['EM'];
$this->Name = $in_Entry['N'];
$this->Path = $in_Entry['P'];
$this->Time = $in_Entry['T'];
} // end of the 'SimpleUnzipEntry' constructor
} // end of the 'SimpleUnzipEntry' class
$unzip = new SimpleUnzip();
print_r($unzip->readfile($myfile));
可以輸入,我要的是解壓,請幫助,謝謝。
www.phpe.net上有下载
一个函数就可以搞定啊
把$file包中的文件全部解压到$fileDir中。 function unzip ($file,$fileDir) {
if (!function_exists(zip_open)) exit("zip_* functions not found! Please check your php environment!");
$zip = zip_open($file);
if ($zip) {
while ($zip_entry = zip_read($zip)) {
$name = zip_entry_name($zip_entry);
if (zip_entry_open($zip, $zip_entry, "r")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$newName=microtime().zip_entry_name($zip_entry); // create a new name for saving pic
$fileHandle=fopen("$fileDir/$newName",'w+'); // Write to a new file
fwrite($fileHandle,$buf,zip_entry_filesize($zip_entry));
fclose($fileHandle);
zip_entry_close($zip_entry);
}else{
return false;
}
}
return zip_close($zip);
}
}
先顶下。
www.phpe.net上有下载我去下載了,解壓文件夾時出錯。有改正的源碼發一份謝謝。[email protected]