基于php下載文件的詳解_PHP教程

      編輯Tag賺U幣

      推薦:深入php數據采集的詳解
      本篇文章是對php數據采集進行了詳細的分析介紹,需要的朋友參考下

      php下載文件,比如txt文件。
      出現的效果就是,彈出瀏覽器自帶的下載框,出現另存為操作。有時候會出現內存溢出和超時的現象。
      超時的話,設置set_time_limit(0);
      出現內存溢出的話,有可能是因為從數據庫中取出的數據量太大導致的。
      如果是從文件中讀取的話,出現內存溢出的話,就是代碼讀取方式不正確,調用files或者filegetcontens才會
      如果是fopen的話,就給一個緩沖區,固定大小,讀入然后寫入,不會出現內存溢出的情況。
      如代碼:
      復制代碼 代碼如下:www.wf0088.com

      if (file_exists($file_path)) { //如果文件存在
      $handle = fopen($file_path, "r");
      while (!feof($handle)) {
      $content = fgets($handle, 4096); //讀取一行
      echo $content; //輸出到緩沖區,即php://stdout。達到緩沖區設置值后由tcp傳給瀏覽器進行輸出 一般到512字節就會通過網絡輸出給瀏覽器
      }
      fclose($handle);
      }

      但是在輸出之前,要調用一次,@ob_end_flush();不能循環調用,只調用一次就好。
      @ob_end_flush();//沖刷出(送出)輸出緩沖區內容并關閉緩沖

      文件下載:
      content-type://下載的格式,瀏覽器不能解析的格式就會彈出下載框
      復制代碼 代碼如下:www.wf0088.com

      header("Content-Type: application/force-download");
      header("Content-Type: application/download");
      header("Content-Transfer-Encoding: binary");
      header("Cache-Control: must-revalidate, post-check=0, Header("Content-type: application/octet-stream");  //響應內容類型  
      Header("Accept-Ranges: bytes");
      Header("Accept-Length: ".filesize($filename). ' bytes');
      Header('Content-Disposition: attachment; filename='.$filename);  //HTTP響應頭

      分享:深入PHP操作MongoDB的技術總結
      本篇文章是對PHP操作MongoDB的技術進行了詳細的分析介紹,需要的朋友參考下

      來源:模板無憂//所屬分類:PHP教程/更新時間:2013-06-03
      相關PHP教程