下载 zip 文件后出现“压缩 (zip) 文件夹无效或损坏”错误 - 有时出现,但并非总是出现

下载 zip 文件后出现“压缩 (zip) 文件夹无效或损坏”错误 - 有时出现,但并非总是出现

我在 Apache HTTP 服务器上有一个大约 250Mb 的 zip 存档。一些用户抱怨直接从网站下载文件后出现“损坏的 zip 文件夹”(尽管该网站是基于 Drupal 构建的,但它使用的是公共下载方法,因此应该是直接下载)

当他们尝试在 Windows 中打开它时出现的错误消息是:

压缩 (zip) 文件夹无效或损坏

我自己在 Windows XP 上尝试过,同时使用 Firefox 14 和 IE8。有时它可以正确下载并打开,有时我会收到错误。

另一个用户使用的是 Windows 7 并使用 Internet Explorer,在多次尝试下载后收到了此消息。

当我使用 Filezilla 通过 FTP 下载时,我可以打开 zip 文件而不会出现错误。

由于 FTP 和 HTTP 下载有时可以工作,所以我认为服务器上的文件没有损坏,但在下载过程中发生了一些事情,重新上传文件也无法解决任何问题(我已经尝试过了)。

我使用 IZArc 创建了 zip 文件,但我不太确定这种创建方法在这种情况下是否相关,因为它有时有效。

  1. 是什么原因导致出现上述错误信息?
  2. 为什么有时会发生这种情况,但并不总是发生?
  3. 我该怎么做才能确保 zip 文件将来能够顺利打开并且不会出现任何错误?

答案1

是什么原因导致出现上述错误信息?

下载可能已损坏或截断(不完整)。请检查下载的文件大小是否与服务器上的大小相同。

为什么有时会发生这种情况,但并不总是发生?

由于连接中断,下载可能会被截断,这是随机的 - 可能发生,也可能不会发生。如果您的连接质量较好,则发生这种情况的可能性较小。

我该怎么做才能确保 zip 文件将来能够顺利打开并且不会出现任何错误?

为所有下载提供校验和,并让用户验证它们。但是,您无法真正避免网络问题。您可能希望与您的主机交谈。

答案2

要排除故障,您可以做的一件事是使用该 zip 文件的 MD5 或 SHA-1 哈希值。我假设您可以离线使用原始 zip 文件。

使用赛格威,您可以计算 zip 文件的 SHA-1 或 MD5 哈希值,然后发布结果。哈希值真的很棒,因为它们可用于验证一个文件与另一个文件完全相同。例如:包含“0123456789”的文件的哈希值为 3749f52bb326ae96782b42dc0a97b4c1。包含“1123456789”的文件的哈希值为 b0b7fa225796be83e7fea1345c13d3dd。

如果我没记错的话,这两个字符串之间只有一个位的差异,但正如您所看到的,生成的哈希值存在巨大差异。在软件开发领域,发布 MD5 或 SHA-1 哈希值是非常常见的事情,因为它是确保您的文件未损坏的一种非常好的方法。发布 MD5/SHA-1 哈希值后,您可以让您的客户对 zip 文件进行哈希处理,以查看它是否真的已损坏。

有很多适用于 Windows、Linux 和 Mac 的实用程序可以生成 MD5 和 SHA-1 哈希值。我使用 Cygwin,因为它是免费的。

答案3

这通常发生在文件夹中的某个文件名包含特殊字符(例如引号)时"。您必须忽略这些文件。

但是当你有几千个文件时这很困难,也许你可以尝试7-zip

答案4

如果客户端的文件大小正确,这种情况可能是由于客户端 PC 内存故障或中间网络设备故障造成的。在许多应用程序中,随机位切换通常并不特别明显,但当涉及到用于检查档案完整性的校验和时,每个位都很重要,这些错误变得显而易见。

相关内容