PHP大檔案下載(方式1不支援斷點續傳)

技術小美發表於2017-11-22
 public function download(){

    $id = input(`id`);
    $item = Db::name(`imgsubmit`)->where([`id`=>$id])->find();
    Db::name(`imgsubmit`)->where([`id`=>$id])->update([`status`=>1]);
    $tt = ltrim($item[`zip`],`uploads/`);
    $path = config(`upload_path`).DS.$tt;
    $arr = explode(`/`,$path);
    $iname=$item[`username`].`_`.$item[`order_no`];
    /*$filename = $arr[count($arr)-1];*/
    $filename=$iname.`.zip`;
    //$file  =  fopen($path, "rb");

        if (file_exists($path)) {
         $filesize=filesize($path);
         header(`Content-Description:File Transfer`);
         header("Content-Type:application/octet-stream");
         header(`Content-Transfer-Encoding:binary`);
         header("Accept-Ranges: bytes");
         header(`Expires:0`);
         header(`Cache-Control:must-revalidate`);
         header(`Pragma:public`);
         header("Content-Length:".$filesize);
         header("Content-Disposition:attachment;filename=".$filename);
        //以下內容是引用網友的程式碼,由於原來的出處找不到了,在此表示萬分感謝和抱歉。
        //開啟檔案 
        $fp = fopen($path, "rb"); 
        //設定指標位置 
        ob_start();
        fseek($fp,0); 
        //虛幻輸出 
        while (!feof($fp)) { 
            //設定檔案最長執行時間 
            set_time_limit(0); 
            print (fread($fp, 1024 * 8)); //輸出檔案 
            flush(); //輸出緩衝 
            ob_flush(); 
        } 
        fclose($fp); 
        exit ();}else{echo "檔案不存在!!!";die();}

}







本文轉自lb沫51CTO部落格,原文連結:http://blog.51cto.com/13562606/2066555,如需轉載請自行聯絡原作者


相關文章