今晚我們來聊聊網站文件下載的原理,下面我結合程式碼來給大家分析。
function download($file_name){
header("Content-type:text/html;charset=utf-8");
,避免file_exists函數不認識中文! $file_name = iconv("utf-8","gb2312",$file_name);
$path = $_SERVER path.'/'.$file_name;
// 拼接將下載的檔案的路徑 if(!file_exists($file_path)){
的檔案不存在! ';
exit();
//// 注意服務端將檔案讀入記憶體當中
$fp = fopen($file_path, 'r'); $file_size = filesize($file_path); /// 取得檔案的總大小
/ PHP的頭
// 透過這句程式碼用戶端瀏覽器就能知道服務端回傳的檔案形式
Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes") ;
// 說明文件傳輸單位是位元組
Header("Accept-Length:".$file_size);
// 因為是http // 告訴瀏覽器下載傳回的檔案的名稱
Header("Content-Disposition: attachment; filename=".$file_name); $buffer = 1024 ; // 避免造成很大壓力,因此只讀伺服器一次只讀1024位元組伺服器
$file_count = 0; // feof:讀取到檔案結尾
while(!feof($fp / 透過fopen,檔案已經被放入記憶體了!現在從記憶體中讀取fread即下載
$file_content = fread($fp, $buffer);
// $file_content:每次讀到的檔案內容file $uffer$_count +count +$uffer_count +count; ;
// echo每次讀到的內容,就好比是一點一點的下載
} fclose($fp);
}原理,希望會對大家以後做下載方面功能的時候,有些許啟發,那樣就足夠了!
以上就介紹了淺談網站檔案下載的原理,包括了方面的內容,希望對PHP教學有興趣的朋友有幫助。