この投稿は love_u_qt によって最終編集されました: 2012-08-05 15:08:30 私が PHP を使ってファイルをダウンロードする方法を学んでいたとき、教科書には 3 つの http メッセージ ヘッダーを提供する必要があると書かれていました。 :
<br /> header("Content-type: application/octet-stream"); //高速浏览器传递的是文件流<br /> header("Accept-Length: 2048"); //文件大小<br /> header("Content-Disposition: attachment; filename=abc.txt"); //指定文件名<br />
このうち、「Content-type」と「Content-Disposition」の 2 つのメッセージ ヘッダーがまだ理解できないので、それぞれ 2 つの例を作成しました:
a .php:
<br /><?php<br /><br /> header("Content-type: application/octet-stream");<br /> header("Accept-Length: 2048"); <br /><br /> echo 123;<br />
b.php:
<br /><?php<br /><br /> header("Accept-Length: 2048");<br /> header("Content-Disposition: attachment; filename=abc.txt"); <br /><br /> echo 123;<br />
私の質問は次のとおりです:
1. 両方のページにメッセージ ヘッダーがありません。 , ファイルが正常にダウンロードできるのはなぜですか?
2. ファイルサイズは 2048 バイトですが、実際の出力は「123」の 3 バイトだけですが、なぜ正常にダウンロードできますか?
「Accept-Length」メッセージ ヘッダーはオプションですか?
http を学んだばかりです。理解できないので、より深い概念を導入しないで、質問に答えてください。 。
ありがとうございます! :)
------解決策のアイデア----------------------1.メッセージ ヘッダーが 1 つ欠落している場合、なぜファイルは正常にダウンロードできるのでしょうか?
Content-Length を設定していないため、接続終了時のデフォルトの出力はダウンロードされたコンテンツです。
2. 指定したファイルサイズは 2048 バイトですが、実際の出力は「123」の 3 バイトしか正常にダウンロードできないのはなぜですか? 「Accept-Length」メッセージヘッダーはオプションですか?
Accept-Length は、許容可能な文字列の最大長を意味します。したがって、設定してもしなくても構いません。