Apache HTTP サーバー上に約 250 MB の zip アーカイブがあります。Web サイトから直接ファイルをダウンロードした後、何人かのユーザーから「zip フォルダーが壊れている」という苦情がありました (サイトは Drupal で構築されていますが、パブリック ダウンロード メソッドを使用しているため、直接ダウンロードする必要があります)。
Windows で開こうとすると、次のエラー メッセージが表示されます。
圧縮(zip)フォルダが無効または破損しています
私は Windows XP で Firefox 14 と IE8 の両方を使用してこれを試しました。ダウンロードして正常に開く場合もあれば、エラーが発生する場合もあります。
別のユーザーは Windows 7 で Internet Explorer を使用しており、ダウンロードを数回試行した後にこのメッセージが表示されました。
Filezilla を使用して FTP 経由でダウンロードすると、エラーなしで zip ファイルを開くことができます。
FTP および HTTP ダウンロードは時々機能するため、サーバー上のファイルは破損していないが、ダウンロード中に何かが発生し、ファイルを再アップロードしても何も修正されないと想定しています (これは試しました)。
私は IZArc を使用して zip ファイルを作成しましたが、作成方法がこの場合に適切かどうかはわかりません。
- 上記のエラーメッセージの原因は何ですか?
- なぜいつもではなく時々起こるのでしょうか?
- 今後、エラーなく zip ファイルを開けるようにするにはどうすればよいでしょうか?
答え1
上記のエラーメッセージの原因は何ですか?
ダウンロードが破損しているか、切り捨てられている (不完全である) 可能性があります。ダウンロードしたファイルのサイズがサーバー上のサイズと同じかどうかを確認してください。
なぜいつもではなく時々起こるのでしょうか?
接続が切断されたためにダウンロードが中断される可能性がありますが、これはランダムな現象であり、発生する場合もあれば、発生しない場合もあります。接続品質が良ければ、おそらく発生する可能性は低くなります。
今後、エラーなく zip ファイルを開けるようにするにはどうすればよいでしょうか?
すべてのダウンロードにチェックサムを提供し、ユーザーに検証してもらいます。ただし、ネットワークの問題を完全に回避することはできません。ホストに相談することをお勧めします。
答え2
何が起こっているのかをトラブルシューティングするためにできることの 1 つは、その zip ファイルの MD5 または SHA-1 ハッシュを使用することです。元の zip ファイルはオフラインで使用できると思います。
使用シグウィン、ZIP ファイルの SHA-1 または MD5 ハッシュを計算し、その結果を公開することができます。ハッシュは、あるファイルが別のファイルとまったく同じであることをビット レベルで検証するために使用できるため、非常に便利です。たとえば、「0123456789」を含むファイルのハッシュは 3749f52bb326ae96782b42dc0a97b4c1 です。「1123456789」を含むファイルのハッシュは b0b7fa225796be83e7fea1345c13d3dd です。
私の ASCII の記憶が正しければ、2 つの文字列の違いは 1 ビットだけですが、結果のハッシュには大きな違いがあることがわかります。MD5 または SHA-1 ハッシュを公開することは、ファイルが破損していないことを確認するための非常に優れた方法であるため、ソフトウェア開発の世界では非常に一般的に行われています。MD5/SHA-1 ハッシュを公開した後、顧客に zip のハッシュを取得してもらい、実際に破損しているかどうかを確認できます。
Windows、Linux、Mac 向けに MD5 および SHA-1 ハッシュを生成するユーティリティは数多くあります。私は無料なので Cygwin を使用しています。
答え3
これは通常、フォルダー内のファイル名の 1 つに引用符などの特殊文字が含まれている場合に発生します"
。これらのファイルは無視する必要があります。
しかし、数千のファイルがある場合は難しいので、試してみるといいかもしれません7-ジップ。
答え4
クライアント側のファイルのサイズが正しい場合、この状況はクライアント PC のメモリの障害、または中間のネットワーク機器の障害によって発生している可能性があります。多くの場合、ランダム ビット スイッチングは多くのアプリケーションで特に顕著ではありませんが、アーカイブの整合性をチェックするために使用されるチェックサムに関しては、すべてのビットが重要になり、それらのエラーが明らかになります。