PHP使用檔案流下載檔案方法(附:解決下載檔案內容亂碼問題),_PHP教程

來源:互聯網
上載者:User

PHP使用檔案流下載檔案方法(附:解決下載檔案內容亂碼問題),


記得高中時候做過遊戲私服,那時候的遊戲首頁是用PHP寫的,因為檔案很固定,用戶端,登陸器和一些小工具,檔案數目也不是很多,所以都是直接把下載連結寫死的,直接連結到本機伺服器的檔案目錄,今天QQ群有個朋友突然問我用檔案流做PHP下載功能,順手寫了個小Demo,代碼很簡單,注釋也全,直接上代碼吧~

1、flush — 重新整理輸出緩衝

2、ob_clean — 清空(擦掉)輸出緩衝區

此函數用來丟棄輸出緩衝區中的內容。

此函數不會銷毀輸出緩衝區,而像 ob_end_clean() 函數會銷毀輸出緩衝區。

註:上面2個函數可以解決PHP下載檔案內容亂碼

php    //fname為要下載的檔案名稱    //$fpath為下載檔案所在檔案夾,預設是downlod    function download($fname,$fpath="download/"){        //避免中文檔案名稱出現檢測不到檔案名稱的情況,進行轉碼utf-8->gbk        $filename=iconv('utf-8', 'gb2312', $fname);        $path=$fpath.$filename;        if(!file_exists($path)){//檢測檔案是否存在            echo "檔案不存在!";            die();        }        $fp=fopen($path,'r');//唯讀方式開啟        $filesize=filesize($path);//檔案大小        //返回的檔案(流形式)        header("Content-type: application/octet-stream");        //按照位元組大小返回        header("Accept-Ranges: bytes");        //返迴文件大小        header("Accept-Length: $filesize");        //這裡用戶端的彈出對話方塊,對應的檔案名稱        header("Content-Disposition: attachment; filename=".$filename);        //================重點====================        ob_clean();        flush();        //=================重點===================        //設定分流        $buffer=1024;        //來個檔案位元組計數器        $count=0;        while(!feof($fp)&&($filesize-$count>0)){            $data=fread($fp,$buffer);            $count+=$data;//計數            echo $data;//傳資料給瀏覽器端        }        fclose($fp);    }    download("CGEX指令碼清單.doc");?>




http://www.bkjia.com/PHPjc/858176.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/858176.htmlTechArticlePHP使用檔案流下載檔案方法(附:解決下載檔案內容亂碼問題), 記得高中時候做過遊戲私服,那時候的遊戲首頁是用PHP寫的,因為檔案很...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.