RarEntry::getStream

(PECL rar >= 2.0.0)

RarEntry::getStreamПолучить обработчик для записи

Описание

public resource RarEntry::getStream ([ string $password ] )

Возвращает обработчик, поддерживающий операцию чтения. Этот обработчик умеет распаковывать запись на лету.

Обработчик не уничтожается при вызове rar_close().

Внимание

Результирующий поток не проверяется на целостность. Следовательно никак не определяется порча файла или расшифровка с неверным ключем. Проверка контрольной суммы разжатого и расшифрованного файла полностью на совести разработчика.

Список параметров

password

Пароль, использовавшийся для шифрования записи. Если запись не шифрована, то этот параметр игнорируется и в целом может быть опущен. Если же параметр опущен, а запись шифрована, то будет использован пароль заданный в функции rar_open(), если конечно он был задан. Если был задан неверный пароль, явно или неявно через rar_open(), этот метод вернет поток с неверными данными. Если пароль не задан вообще, а он нужен, то метод вернет FALSE. Зашифрована ли запись или нет можно проверить с помощью RarEntry::isEncrypted().

Возвращаемые значения

Обработчик или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
3.0.0 Поддержка RAR-архивов с дублирующимися именами записей теперь работает нормально.

Примеры

Пример #1 Пример использования RarEntry::getStream()

<?php

$rar_file 
rar_open('example.rar');
if (
$rar_file === false)
    die(
"Failed to open Rar archive");

$entry rar_entry_get($rar_file'Dir/file.txt');
if (
$entry === false)
    die(
"Failed to find such entry");

$stream $entry->getStream();
if (
$stream === false)
    die(
"Failed to obtain stream.");

rar_close($rar_file); //поток не зависит от файла

while (!feof($stream)) {
    
$buff fread($stream8192);
    if (
$buff !== false)
        echo 
$buff;
    else
        break; 
//ошибка fread
}

fclose($stream);

?>

Смотрите также