2011-09-15 20 views
2

サーバからgzipされたコンテンツを送信しようとしています。私はファイル(get it here)をgzipして、echoにしようとしています。私は正しいヘッダーを設定しました(私は思っています)。出力は正しく開始されますが、最初の数行だけが出力されます。php echo gzippedファイルが途中で途切れる

<?php 
    $file = file_get_contents('kendo/js/kendo.all.js.gz'); 
    header('Content-Encoding: gzip'); 
    header('Content-Length: '.strlen($file)); # gets the correct filesize of my gzipped file 
    echo $file; 
?> 

私の方法に問題がありますか?

+0

「content-type」ヘッダーがあるはずです。また、 'error_reporting'を' E_ALL'にして、ダウンロードが失敗した後にダウンロードしたものをテキストエディタで開き、PHPエラーを探すことができます。 –

+0

は誤ったアラームのようです。私は今、同じコードを実行しているようです。ブラウザ/サーバーのキャッシュに関する問題があったはずです。 –

答えて

1

をob_gzhandlerを使用することを検討してください - 別のエラーがありました、私は、ブラウザのキャッシュの問題を想定しています - しかし、それは自分自身を解決しました。

1

コンテンツの長さは、実際の.jsファイルではなく、gzippedファイルの長さです。

したがって、gzippedファイルの長さに達すると、コンテンツは切り詰められます。投稿コードが動作

http://php.net/manual/en/function.ob-gzhandler.php

+0

content-lengthは、クライアントに送信されるデータの長さを指し、解凍されたデータの長さを意味しないと思います。提案されたgzhandlerをありがとう、それはおそらくすべてのより良いアプローチになります。 –

+0

はい!クライアントに送信されるデータの長さは、実際の.jsファイルの長さではなく、gzipファイルの長さです。しかし、あなたが.jsファイルの内容をエコーし​​ようとしているのは、私が言うことです。 –

+0

いいえ - gzippedファイルの内容をエコーし​​ているので、ブラウザがデコードするまで、文字化けしたテキストのように見えます。それは今働いているようだが、サーバー/ブラウザのキャッシュの問題であったに違いない。乾杯してください –

関連する問題