RarEntry::getStream
(PECL rar >= 2.0.0)
RarEntry::getStream — Получить обработчик для записи
Описание
$password
= ?
) : resource|falseВозвращает обработчик, поддерживающий операцию чтения. Этот обработчик умеет распаковывать запись на лету.
Обработчик не уничтожается при вызове 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);
?>