打开 zip 并阅读内容

Posted

技术标签:

【中文标题】打开 zip 并阅读内容【英文标题】:Open zip and read contents 【发布时间】:2010-01-13 22:49:05 【问题描述】:

我有一个小的 php、应用程序或任何可以打开 zip 并读取内容的东西。但它只在某些时候有效......有时当我上传 .zip 并尝试查看内容时,它会工作并将每个文件回显给我,但在其他时候(是的,我有很多 .zip 文件),它返回这些错误:

Warning: zip_read() expects parameter 1 to be resource, integer given in /home/blah/public_html/templates.php on line 23

Warning: zip_close() expects parameter 1 to be resource, integer given in /home/blah/public_html/templates.php on line 31

这是我的代码:

$open = zip_open($file);
while($zip = zip_read($open)) 
$file = zip_entry_name($zip);
echo $file.'<br />';

zip_close($open);

【问题讨论】:

【参考方案1】:

发生这种情况的情况是Zip文件无法打开的情况。

Zip_open() 在遇到错误时返回一个整数而不是文件句柄。 Documentation

返回资源句柄以供以后与 zip_read() 和 zip_close() 一起使用,或者如果文件名不存在或出现其他错误,则返回错误数。

您需要输出$open 并检查它给您的错误代码。在尝试运行任何 zip 操作之前,您应该将其构建到代码中作为固定检查。

This table 会告诉你哪个错误代码意味着什么。

【讨论】:

作为一般规则,您也应该在代码中的某个位置进行检查,而不是期望它正常。 一个简单的检查可能是 if(is_numeric($open))//failelsewhile....【参考方案2】:
$open = zip_open($file);

if (is_numeric($open)) 
    echo "Zip Open Error #: $open";
    else 
   while($zip = zip_read($open)) 
   .....
   

【讨论】:

以上是关于打开 zip 并阅读内容的主要内容,如果未能解决你的问题,请参考以下文章

如何读取 zip 文件的内容并保存文件

百科知识 epub文件如何打开

JDK源码阅读环境搭建

手机java怎么打开的epub文件

如何将包含 zip 文件的 QBytesArray 加载到 QuaZip?

在阅读时复制Zip文件