http - PHP の content-length 設定の問題について。
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 12:58:51
0
1
1124

1. まず私の使用シナリオについてお話します。つまり、クライアントはサーバーのインターフェイスを使用してファイルをダウンロードします。サーバー側はバイナリを直接取得して出力します。 echo binary以外にもっと合理的な戻り方法はありますか?

2. PHP header('Content-Length: '.strlen($Download)); を使用して Content-Length を設定します。論理的に言えば、http リクエスト自体が出力のサイズに応じて Content-Length を設定するためです。設定を変更した場合でも、最終的に要求された Content-Length は依然として実際のサイズに基づいています。

3. もう 1 つの問題は、10M ファイルのバイナリをリクエストしていることです。ブラウザでリクエストした場合、Content-Length ヘッダーはまったく返されません。クライアントからのリクエスト時には、Content-Length を正常に返すことができます。 Content-Lengthの返却もリクエストメソッドに関係するのでしょうか?

过去多啦不再A梦
过去多啦不再A梦

全員に返信(1)
漂亮男人

ソースはバイナリ ストリームですか?

1. ファイルの場合は、実際のパスを非表示にするために、次の方法を試してください:

高効率readfile($filename)echo

または

テクノロジーX-SendFileを使用する

実際にバイナリ ストリームである場合は、最初にファイルにキャッシュしてから、それを試してみることもできます

X-SendFile

2、

header设置Content-Length是有效的,返回真实的大小即可。这个在一些下载软件比较重要,比如迅雷。
它会检测最终大小是否符合Content-Length

3、ブラウザは

で応答し、ブラウザはそれを受け入れます。 Content-Length为参照,
但是当网络很糟糕的时候,超时、断流了,浏览器也会停止下载,最终得到的是一个不完整的文件,这个下载国外软件的时候很常见。
如果实际大小超过了Content-Length

4 なので、

が返されなくても、ブラウザはダウンロードできます。サーバーが切断されると、ブラウザはダウンロードを終了します。 Content-Length

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート