這篇文章主要介紹了關於php下載檔案方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
<?php/** * @param $filePath //下載檔案的路徑 * @param int $readBuffer //分段下載 每次下載的位元組數 預設1024bytes * @param array $allowExt //允許下載的檔案類型 * @return void */function downloadFile($filePath, $readBuffer = 1024, $allowExt = ['jpeg', 'jpg', 'peg', 'gif', 'zip', 'rar', 'txt']){ //檢測下載檔案是否存在 並且可讀 if (!is_file($filePath) && !is_readable($filePath)) { return false; } //檢測檔案類型是否允許下載 $ext = strtolower(pathinfo($filePath, PATHINFO_EXTENSION)); if (!in_array($ext, $allowExt)) { return false; } //設定頭資訊 //聲明瀏覽器輸出的是位元組流 header('Content-Type: application/octet-stream'); //聲明瀏覽器返回大小是按位元組進行計算 header('Accept-Ranges:bytes'); //告訴瀏覽器檔案的總大小 $fileSize = filesize($filePath);//坑 filesize 如果超過2G 低版本php會返回負數 header('Content-Length:' . $fileSize); //注意是'Content-Length:' 非Accept-Length //聲明下載檔案的名稱 header('Content-Disposition:attachment;filename=' . basename($filePath));//聲明作為附件處理和下載後檔案的名稱 //擷取檔案內容 $handle = fopen($filePath, 'rb');//二進位檔案用‘rb’模式讀取 while (!feof($handle) ) { //迴圈到檔案末尾 規定每次讀取(向瀏覽器輸出為$readBuffer設定的位元組數) echo fread($handle, $readBuffer); } fclose($handle);//關閉檔案控制代碼 exit;}
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!