我有使用随机资产的 PHP 代码,我想从 tar.gz 文件中获取它们,而无需在运行时解包。
有什么办法吗?(当然:我可以解压,但是为什么?我只想要一个图像和base64它(有不同的图像;这只是示例))。
我有使用随机资产的 PHP 代码,我想从 tar.gz 文件中获取它们,而无需在运行时解包。
有什么办法吗?(当然:我可以解压,但是为什么?我只想要一个图像和base64它(有不同的图像;这只是示例))。
没有明智、有效的方法可以做到这一点。TAR 和 Gzip 都不支持随机访问,因此您必须解压缩并扫描整个内容才能访问存档中的任何元素。这将非常缓慢。
如果您需要随机访问压缩数据,请使用 ZIP 之类的东西。
您可以使用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;
?>