压缩文件的get_file_contents

时间:2013-09-19 19:40:52

标签: php zip unzip

我的服务器上有一个ZIP文件。我想解压缩它,然后将完整的文件内容保存到一个变量中。

我不想将解压缩的文件保存在我的服务器或访问者的计算机上。我只需要将该压缩文件的所有内容存储在一个我可以玩的变量中,并最终显示在屏幕上。我找到的解决此问题的所有其他解决方案包括以解压缩的形式重新保存文件。

如何使用get_file_contents或任何其他函数执行此操作?

1 个答案:

答案 0 :(得分:0)

例如,您可以使用PHP ZipArchive在ZIP存档中找到文件名。尝试这个(没有测试过,但你应该可以让它工作):

$za = new ZipArchive(); 
$za->open('archive.zip');
$fileContents = array();

for( $i = 0; $i < $za->numFiles; $i++ ) { 

    $stat = $za->statIndex( $i ); 
    $fp = $z->getStream($stat['name']);
    if(!$fp) exit("failed\n");

    $contents = '';
    while (!feof($fp)) {
        $contents .= fread($fp, 1000);
    }

    fclose($fp);

    $fileContents[$stat['name']] = $contents;
}

知道Zip中文件的名称后,您还可以使用以下内容:

$path = sprintf('zip://%s#%s', $zipArchive, $fileNameInZipArchive);
$fileData = file_get_contents($path);