http - 关于PHP设置content-length的问题。
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 12:58:51
0
1
1085

1.先说一下我这边的使用场景。就是客户端使用服务端的接口下载文件。服务端这边是直接获取二进制然后输出的。请问除了echo 二进制以外还有没有更合理的返回方式。

2.用PHP header('Content-Length: '.strlen($Download));设置Content-Length,这个设置实际上无效的吗?因为照理来说的话,本身http请求会根据输出的大小来设置Content-Length。即使我设置改变了 最终请求的Content-Length还是根据实际的大小。

3.还有一个问题就是比如我请求一个 10M的文件的二进制。用浏览器请求的话压根没有Content-Length这个头返回。用客户端那边请求能正常返回Content-Length。Content-Length的返回跟请求的方式也有关系?

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

membalas semua(1)
漂亮男人

Adakah sumber anda aliran binari?

1 Jika ia adalah fail, hanya untuk menyembunyikan laluan sebenar, anda boleh mencuba kaedah berikut:

readfile($filename) lebih cekap daripada echoreadfile($filename)echo效率高

或者使用 X-SendFile技术

如果的确是二进制流,也可以尝试先缓存成文件了 然后 X-SendFile

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

3, 浏览器会以Content-Length为参照,
但是当网络很糟糕的时候,超时、断流了,浏览器也会停止下载,最终得到的是一个不完整的文件,这个下载国外软件的时候很常见。
如果实际大小超过了Content-Length,浏览器也接受。

4, 所以即使没有Content-Length

Atau gunakan teknologi X-SendFile🎜 🎜Jika ia sememangnya aliran binari, anda juga boleh mencuba menyimpannya dalam fail dahulu dan kemudian X-SendFile🎜 🎜2, tetapan header Content-Length adalah sah, cuma kembalikan saiz sebenar. Ini lebih penting dalam sesetengah perisian muat turun, seperti Thunder.
Ia akan menyemak sama ada saiz akhir mematuhi Panjang Kandungan🎜 🎜3 Penyemak imbas akan menggunakan Content-Length sebagai rujukan,
tetapi apabila rangkaian sangat teruk, masa tamat atau terputus sambungan, penyemak imbas juga akan berhenti memuat turun dan perkara yang anda tamatkan. dengan adalah muat turun yang salah, ini adalah perkara biasa apabila memuat turun perisian asing.
Jika saiz sebenar melebihi Panjang Kandungan, penyemak imbas juga menerimanya. 🎜 🎜4, Jadi walaupun tiada Content-Length dikembalikan, penyemak imbas masih boleh memuat turun Apabila pelayan memutuskan sambungan, penyemak imbas akan menamatkan muat turun. 🎜
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!