php下載檔案方法

來源:互聯網
上載者:User
這篇文章主要介紹了關於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!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.