PHP 处理档案中的文件
Posted
技术标签:
【中文标题】PHP 处理档案中的文件【英文标题】:PHP working with files inside an archive 【发布时间】:2012-04-12 11:00:44 【问题描述】:是否有支持 php 的方式来处理文件存档(.zip、.tar 或任何其他存档),就像我们处理文件夹一样?
例如,如果在我们的根“/www/”目录中有一个包含 .php 文件的存档“/www/catalog.zip”,是否可以将这个存档包含在 PHP 中,以便 PHP 知道什么是在存档中,如果需要包含一个文件(例如catalog.zip 中的test.php),我们可以在不提取“catalog.zip”存档的情况下这样做吗?
不确定是否存在这样的事情(当然可以构建一个应用程序来执行这样的事情,但如果使用 PHP 使用提取读取/删除来完成,这将是资源)
或者也许有类似的东西可以使用?
【问题讨论】:
任何应用程序都无法在不解压缩的情况下处理任何存档文件的数据。这就是档案的意义所在。这对于像tar
这样的未压缩档案来说并不完全正确,但是在找到要读取的档案中正确的起点和终点时,您实际上是在提取文件。
我理解 Dave,但如果可以做到这一点,那么维护和处理文件(尤其是上传)会更容易,想象一下使用超过 1000 个文件的大型项目,甚至使用 ckeditor(它拥有的文件数量(即使它只有大约 5mb)需要大约 30 分钟才能在连接缓慢的情况下上传):)
【参考方案1】:
也许像 ZipArchive::getStream
和 stream_get_contents
这样的东西可以让你获得文件内容,但我不确定你会如何包含它 - 不要认为 php 可以来自 stdin 的 include
【讨论】:
在那个例子中,你不会include
它,而是eval()
(邪恶)它。但无论如何您都不会这样做,您只需将文件存储在一个目录中,而无需费心归档它们。以上是关于PHP 处理档案中的文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 php 中的每个循环上传 zip 档案会导致 codeigniter 中 zip 文件中的 zip 档案重复
php [WooCommerce Core]隐藏产品档案中的子类别产品计数