我在服務(wù)器端(Apache環(huán)境)上放了一個(gè)安卓apk安裝包的下載鏈接,使用readfile()讀取apk文件輸出下載后,手機(jī)安裝apk顯示解析包錯(cuò)誤。但apk本身沒(méi)問(wèn)題,下載后文件的大小也是完整的。服務(wù)器mime也設(shè)置了。后來(lái)?yè)Q用fread()后輸出就好了。不明白是為什么。搜索了一下沒(méi)遇到解釋的很清楚的,有說(shuō)是因?yàn)椤笇?duì)二進(jìn)制友好」,有這么一說(shuō)嗎?包括還有file_get_contents(),fgets()等另外的幾個(gè)文件讀取函數(shù)和方法,一直都不能很好的分清什么時(shí)候該用哪個(gè)。除了手冊(cè)之外,有沒(méi)有一些有應(yīng)用場(chǎng)景的好的介紹文章?補(bǔ)上前后的代碼:readfile():header("Content-type:application/vnd.android.package-archive");header("Accept-Ranges:bytes");header("Accept-Length:".$filesize);header("Content-Disposition:attachment;filename=".$name);readfile($file);fread():header("Content-type:application/vnd.android.package-archive");header("Accept-Ranges:bytes");header("Accept-Length:".$filesize);header("Content-Disposition:attachment;filename=".$name);$handle=fopen($file,"r");echofread($handle,$filesize);fclose($handle);
PHP中輸出文件,怎么區(qū)別什么時(shí)候該用readfile() , fread(), file_get_contents(), fgets()?
慕工程0101907
2019-04-13 08:45:50