ZIP dosyaları IE tarafından bozulmuş olsun

3 Cevap php

PHP bir döngü kullanarak 64k parçalar bir ZIP dosyası teslim ediyorum (ama sorun herhangi bir sunucu tarafı dil ile ortaya çıkacak).

FF ile dosyayı getiriliyor, her şey gayet güzel gidiyor.

IE7 ile dosya alınırken, bazı bit bozuk olsun. Bu yanlış ÇHS ile ilgili bir hata mesajı (karma) yol açar ve Açılmış bazı dosyalar bozuk olmuyor.

Gönderilen başlıkları aşağıdaki gibidir:

Expires: 0
Cache-Control: must-revalidate, post-check=0, pre-check=0
Pragma: public
Content-Description: File Transfer
Content-Disposition: attachment; filename="671fb8f80f5e94984c59e61c3c91bb70.zip";
Content-Transfer-Encoding: binary
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/octet-stream

Herkes bu yolsuzluk gelen bir ipucu var mı?

3 Cevap

Önceki cevaplar sayesinde, ben sorunu çözmek için başardı:

Apache mod_deflate gzip yanıtları kodlanmış. Parçalar dosyayı gönderirken bu iki etkisi vardı:

  1. Content-Length başlık gönderilen değildi
  2. IE7 kullanırken teslim dosyaları bozulmuş idi

Çözelti, php, aşağıdaki komutu kullanarak yanıt kodlama devre dışı bırakmak için:

apache_setenv('no-gzip', '1');
Content-Encoding: gzip

Eğer (zaten sıkıştırılmış) zip gzip niyetinde mi? Ben web sunucusu bu başlığı ekler varsayalım, ancak PHP ile bunu kendiniz ilave edilirse o zaman belki bu sorun olabilir?

Bu MSDN article IIS gzip kullanarak ZIP dosyalarını kodlar, ancak uygun başlıkları olmadan, bu ayıklayacak programa göndermeden önce deşifre olmayacağını açıklar. Firefox muhtemelen otomatik olarak çözmek için yeterince akıllı. Bir düzeltme makalede açıklanan, makale başlığı tam olarak sorunu söz etmez sanıyordum.

Ben sadece durumda IIS ayarlarını çift-kontrol olur.