下載 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-拉鍊

答案4

如果用戶端的檔案大小正確,則這種情況可能是由於用戶端 PC 的記憶體故障或中間的網路裝置故障造成的。通常,隨機位元切換在許多應用程式中並不特別明顯,但當涉及到用於檢查存檔完整性的校驗和時,每一位都很重要,這些錯誤就變得顯而易見。

相關內容