(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)
ZipArchive::getStream — Получить дескриптор файла элемента, определённый по имени элемента (только для чтения)
Получить дескриптор файла, определённый по имени элемента. На данный момент поддерживаются только операции чтения.
name
Используемое имя элемента.
Возвращает файловый указатель (ресурс) в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Получить содержимое элемента при помощи fread() и сохранить его
<?php
$contents = '';
$z = new ZipArchive();
if ($z->open('test.zip')) {
$fp = $z->getStream('test');
if(!$fp) exit("ошибка\n");
while (!feof($fp)) {
$contents .= fread($fp, 2);
}
fclose($fp);
file_put_contents('t',$contents);
echo "готово.\n";
}
?>
Пример #2 То же, что и в предыдущем примере, но используя fopen() и через обёртку zip-потока
<?php
$contents = '';
$fp = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r');
if (!$fp) {
exit("Не получается открыть\n");
}
while (!feof($fp)) {
$contents .= fread($fp, 2);
}
echo "$contents\n";
fclose($fp);
echo "Готово.\n";
?>
Пример #3 ZIP-поток и изображение могут быть использованы также в функции XML
<?php
$im = imagecreatefromgif('zip://' . dirname(__FILE__) . '/test_im.zip#pear_item.gif');
imagepng($im, 'a.png');
?>