1. Biar saya bercakap tentang senario penggunaan saya. Iaitu, pelanggan menggunakan antara muka pelayan untuk memuat turun fail. Bahagian pelayan secara langsung memperoleh binari dan mengeluarkannya. Adakah terdapat kaedah pulangan yang lebih munasabah selain echo binary?
2. Gunakan pengepala PHP('Content-Length: '.strlen($Download)); Kerana secara logiknya, permintaan http itu sendiri akan menetapkan Panjang Kandungan mengikut saiz output. Walaupun saya menukar tetapan, Panjang Kandungan yang diminta terakhir masih berdasarkan saiz sebenar.
3. Satu lagi masalah ialah saya meminta binari fail 10M. Jika anda memintanya dengan penyemak imbas, tidak akan ada pengepala Panjang Kandungan dikembalikan sama sekali. Apabila meminta daripada pelanggan, Panjang Kandungan boleh dikembalikan seperti biasa. Adakah pemulangan Kandungan-Panjang juga berkaitan dengan kaedah permintaan?
Adakah sumber anda aliran binari?
1 Jika ia adalah fail, hanya untuk menyembunyikan laluan sebenar, anda boleh mencuba kaedah berikut:
echo
readfile($filename)
比echo
效率高或者使用
X-SendFile
技术如果的确是二进制流,也可以尝试先缓存成文件了 然后
X-SendFile
2,
header
设置Content-Length
是有效的,返回真实的大小即可。这个在一些下载软件比较重要,比如迅雷。它会检测最终大小是否符合
Content-Length
3, 浏览器会以
Content-Length
为参照,但是当网络很糟糕的时候,超时、断流了,浏览器也会停止下载,最终得到的是一个不完整的文件,这个下载国外软件的时候很常见。
如果实际大小超过了
Content-Length
,浏览器也接受。4, 所以即使没有
Atau gunakan teknologiContent-Length
X-SendFile
🎜 🎜Jika ia sememangnya aliran binari, anda juga boleh mencuba menyimpannya dalam fail dahulu dan kemudianX-SendFile
🎜 🎜2, tetapanheader
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
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
Content-Length
dikembalikan, penyemak imbas masih boleh memuat turun Apabila pelayan memutuskan sambungan, penyemak imbas akan menamatkan muat turun. 🎜