我在學習利用PHP實現檔案下載的時候,教材說需要提供三個http訊息頭:
header("Content-type: application/octet-stream"); //高速瀏覽器傳遞的是檔案流header("Accept-Length: 2048"); //檔案大小header("Content-Disposition: attachment; filename=abc.txt"); //指定檔案名稱
其中,“Content-type”和“Content-Disposition”兩個訊息頭,我還是有點不太理解,所以我分別做了兩個例子:
a.php:
b.php:
我的問題是:
1、這兩個頁面都少一個訊息頭,為什麼還都能成功的下載檔案?
2、我雖然指定的檔案大小是2048個位元組,但是真實輸出的只有“123”三個位元組,為什麼也能正常的下載檔案?
“Accept-Length”訊息頭是可設可不設嗎?
我剛剛學習http,麻煩大家就我問的問題回答,不要引出更深的概念,因為我看不懂。。
十分感謝!:)
回複討論(解決方案)
不是Accept-Length,是Content-Length
也不知道誰誤導大家用Accept-Length的,RFC標準裡沒有這個Header的。
不是Accept-Length,是Content-Length
也不知道誰誤導大家用Accept-Length的,RFC標準裡沒有這個Header的。
嗯,謝謝你的提示!
我的問題能幫我解答一下嗎? 1、這兩個頁面都少一個訊息頭,為什麼還都能成功的下載檔案?
因為你沒有設定Content-Length,預設串連結束時的輸出就是下載內容。
2、我雖然指定的檔案大小是2048個位元組,但是真實輸出的只有“123”三個位元組,為什麼也能正常的下載檔案?“Accept-Length”訊息頭是可設可不設嗎?
Accept-Length的意思是最大可接受字串的長度。所以可設可不設。
1、這兩個頁面都少一個訊息頭,為什麼還都能成功的下載檔案?
因為你沒有設定Content-Length,預設串連結束時的輸出就是下載內容。
2、我雖然指定的檔案大小是2048個位元組,但是真實輸出的只有“123”三個位元組,為什麼也能正常的下載檔案?“Accept-Length”訊息頭是可設可不設嗎?
Accept-Length的意思是最大可接受字串的長度。所以可設可不設。
嗯知道了,謝了哥們! 不錯,學習了。