0

我有使用随机资产的 PHP 代码,我想从 tar.gz 文件中获取它们,而无需在运行时解包。

有什么办法吗?(当然:我可以解压,但是为什么?我只想要一个图像和base64它(有不同的图像;这只是示例))。

4

2 回答 2

1

没有明智、有效的方法可以做到这一点。TAR 和 Gzip 都不支持随机访问,因此您必须解压缩并扫描整个内容才能访问存档中的任何元素。这将非常缓慢。

如果您需要随机访问压缩数据,请使用 ZIP 之类的东西。

于 2012-07-11T18:59:42.900 回答
0

您可以使用popen来调用tar以提取内存中存档的单个文件:

例如:

z.tgz -> contains two files 1.txt and 2.txt

然后这会将您的内容1.txt放入一个变量中。

<?php
    $file='z.tgz';
    $extract='1.txt';

    $fp=popen('tar Oxzf '.$file.' '.$extract,'r');
    if (!$fp) die('Failed to execute tar');
    $data=stream_get_contents($fp);
    fclose($fp);
    echo 'Contents of '.$extract.': '.$data;
?>
于 2012-07-11T19:37:01.003 回答