【问题标题】:Unexpected End of Archive When Zipping Files with PCLZip or ZipArchive使用 PCLZip 或 ZipArchive 压缩文件时存档意外结束
【发布时间】:2015-03-23 18:50:35
【问题描述】:

目前想知道是否有人遇到过损坏的 zip 文件。我目前正在使用以下代码

// Multiple File Downloads

require_once('includes/pclzip.lib.php');

$archive = new PclZip('archive.zip');

$v_list = $archive->create('robots.txt,index.php');

if ($v_list == 0) {
  die("Error : ".$archive->errorInfo(true));
}

$file_url = 'archive.zip';

header('Content-Type: application/zip');

header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 

readfile($file_url);

要创建一个 zip 存档并强制下载 zip,最终这将通过单击按钮启动,但现在我只是尝试创建一个实际工作的存档。

无论我是使用内置的 ZipArchive 类还是使用 PclZip 库,我都会遇到问题。

一件非常奇怪的事情是,当我通过 FileZilla 下载它时,创建并放置在服务器上的 zip工作得很好,但如果我强制下载文件。我在多个浏览器中尝试过,每个浏览器的结果都是一样的。

真的很烦。我承认这是我第一次尝试实现这种类型的功能,所以也许我遗漏了一些东西。我已经看到了一些关于类似问题的主题,但不幸的是,这些解决方案对我不起作用。任何可以提供的帮助将不胜感激。

【问题讨论】:

  • 您没有关闭 zip 文件,也没有保存它...另外,请检查您的服务器是否使用 GZip 压缩来发送内容。并且请您不要关闭 PHP 代码(也就是不要在末尾使用?>)。

标签: php zip ziparchive pclzip


【解决方案1】:

如果它在服务器上工作并且仅在下载时损坏 - 很可能 PHP 正在回显某些内容通知?警告?)以及 ZIP 内容,因此它已损坏下载时。尝试使用文本编辑器打开您下载的 ZIP,并在开头或结尾检查一些 PHP 输出。在 linux 上会是:

cat downloaded.zip | tail
cat downloaded.zip | head

【讨论】:

  • @jasenmp - 怎么样?你设法解决了你的问题吗?
  • 嗨保罗,我很抱歉放弃这个线程。我快到最后期限了。我只是试图在记事本中打开它,但我没有看到任何与 PHP 相关的内容。你有什么推荐的 windows 文本编辑器可以显示 PHP 输出吗?
  • 如果我是对的 - 您应该在任何文本编辑器(甚至记事本)中的文件顶部或底部立即看到它。
  • 啊,我明白了。我只是仔细检查以确保我没有忽略任何东西。目前这不是一个大问题,但我想弄清楚。它会打扰我。我会继续尽可能多地修补它并寻找解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多