(PECL rar >= 2.0.0)
RarEntry::getStream — Получить обработчик для записи
Возвращает обработчик, поддерживающий операцию чтения. Этот обработчик умеет распаковывать запись на лету.
Обработчик не уничтожается при вызове rar_close().
Результирующий поток не проверяется на целостность. Следовательно никак не определяется порча файла или расшифровка с неверным ключом. Проверка контрольной суммы разжатого и расшифрованного файла полностью на совести разработчика.
password
Пароль, использовавшийся для шифрования записи. Если запись не шифрована, то
этот параметр игнорируется и в целом может быть опущен. Если же параметр опущен,
а запись шифрована, то будет использован пароль заданный в функции
rar_open(), если конечно он был задан. Если был задан неверный
пароль, явно или неявно через rar_open(), этот метод вернёт
поток с неверными данными. Если пароль не задан вообще, а он нужен, то метод
вернёт false
. Зашифрована ли запись или нет можно проверить с помощью
RarEntry::isEncrypted().
Обработчик или false
, если возникла ошибка.
Версия | Описание |
---|---|
PECL rar 3.0.0 | Поддержка RAR-архивов с дублирующимися именами записей теперь работает нормально. |
Пример #1 Пример использования RarEntry::getStream()
<?php
$rar_file = rar_open('example.rar');
if ($rar_file === false)
die("Не удалось открыть Rar архив");
$entry = rar_entry_get($rar_file, 'Dir/file.txt');
if ($entry === false)
die("Не удалось найти такую запись");
$stream = $entry->getStream();
if ($stream === false)
die("Не удалось получить поток.");
rar_close($rar_file); //поток не зависит от файла
while (!feof($stream)) {
$buff = fread($stream, 8192);
if ($buff !== false)
echo $buff;
else
break; //ошибка fread
}
fclose($stream);
?>