Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Extensions > ZIP в PHP


Автор: Edmond 12.8.2002, 20:00
Приветствую.

Пробывал создание zip при помощи zlib изрядно хорошо получаеться.
Однако, хочеться мне чтения архива.
Проблемма вот в чём.

Функция gzcopressed возращает сжатые данные, где в zip урезаются первік два байта (сигнатура) и последние четыре (думаю crc).

Когда генеришь zip отрезаешь эти данные и всё. Однако, когда надо раскрыть архив в функцию gzunxx естественно надо передать эти самые отрезанные байты. С сигнатурой проблем нет, однако последние четыре байта.... Они зависят от данных архива, и получить их при помощи crc32 нельзя...

Кто поможет моему горю...

Автор: Sattu 14.8.2002, 03:46
Cалют, Edmond.
Попробуй так, может и получиться :) .
Код

<?

$filename = tempnam ('/tmp', 'zlibtest').'.gz';
print "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";

// open file for writing with maximum compression
$zp = gzopen($filename, "w9");

// write string to file
gzwrite($zp, $s);

// close file
gzclose($zp);

// open file for reading
$zp = gzopen($filename, "r");

// read 3 char
print gzread($zp, 3);

// output until end of the file and close it.
gzpassthru($zp);

print "\n";

// open file and print content (the 2nd time).
if (readgzfile($filename) != strlen($s)) {
       echo "Error with zlib functions!";
}
unlink($filename);
print "</pre>\n</h1></body>\n</html>\n";

?>

Автор: Edmond 15.8.2002, 20:29
Подожди, это что?
Это чтение gz файла, а я zip просил :(

Автор: Sattu 16.8.2002, 05:00
А... ну дык... прости. Не понял. Как работать с зипом не знаю :( .

Автор: Sattu 16.8.2002, 06:38
Ага, нашел пример...
Только для него надо иметь библиотеку ZZIPlib (http://zziplib.sourceforge.net/ или http://www.php4win.com/), но библиотека должна (я так думаю) включаться в стандартный дистрибутив РНР. Сам я zip/gz не юзаю.
Код

<?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);

}

?>

PS. Желаю удачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)