国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

http - 關(guān)于PHP設(shè)置content-length的問題。
過去多啦不再A夢
過去多啦不再A夢 2017-05-16 12:58:51
0
1
1260

1.先說一下我這邊的使用場景。就是客戶端使用服務(wù)端的接口下載文件。服務(wù)端這邊是直接獲取二進(jìn)制然后輸出的。請問除了echo 二進(jìn)制以外還有沒有更合理的返回方式。

2.用PHP header('Content-Length: '.strlen($Download));設(shè)置Content-Length,這個(gè)設(shè)置實(shí)際上無效的嗎?因?yàn)檎绽韥碚f的話,本身http請求會根據(jù)輸出的大小來設(shè)置Content-Length。即使我設(shè)置改變了 最終請求的Content-Length還是根據(jù)實(shí)際的大小。

3.還有一個(gè)問題就是比如我請求一個(gè) 10M的文件的二進(jìn)制。用瀏覽器請求的話壓根沒有Content-Length這個(gè)頭返回。用客戶端那邊請求能正常返回Content-Length。Content-Length的返回跟請求的方式也有關(guān)系?

過去多啦不再A夢
過去多啦不再A夢

全部回復(fù)(1)
漂亮男人

你的來源是二進(jìn)制流?

1, 如果是文件,只是為了隱藏真實(shí)路徑,可以嘗試用如下方式:

readfile($filename)echo效率高

或者使用 X-SendFile技術(shù)

如果的確是二進(jìn)制流,也可以嘗試先緩存成文件了 然后 X-SendFile

2, header設(shè)置Content-Length是有效的,返回真實(shí)的大小即可。這個(gè)在一些下載軟件比較重要,比如迅雷。
它會檢測最終大小是否符合Content-Length

3, 瀏覽器會以Content-Length為參照,
但是當(dāng)網(wǎng)絡(luò)很糟糕的時(shí)候,超時(shí)、斷流了,瀏覽器也會停止下載,最終得到的是一個(gè)不完整的文件,這個(gè)下載國外軟件的時(shí)候很常見。
如果實(shí)際大小超過了Content-Length,瀏覽器也接受。

4, 所以即使沒有Content-Length返回,瀏覽器也可以下載,等到服務(wù)端斷流,瀏覽器就終止下載。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板