使用 PHP 進行建立檔案並在下載後進行刪除

FirstBlood發表於2020-05-10

需求:下載word文件,並且在下載後刪除,不佔用伺服器空間

    //查詢要下載的資料
    $html = Model::first()->content;
    //建立臨時檔名字
    $fileName = Model::first()->title.".doc";
    //建立檔案到指定目錄
    file_put_contents("./doc/".$fileName,$html);
    //開啟檔案,如果檔案不存在會進行建立
    $fp=fopen("./doc/".$fileName,"r");
    //返回檔案大小
    $file_size=filesize("./doc/".$fileName);
    //下載檔案需要用到的頭
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length:".$file_size);
    Header("Content-Disposition: attachment; filename=".$fileName);
    $buffer=1024; //設定一次讀取的位元組數,每讀取一次,就輸出資料(即返回給瀏覽器)
    $file_count=0; //讀取的總位元組數
    //向瀏覽器返回資料
    while(!feof($fp) && $file_count<$file_size){
      //讀取開啟的檔案
      $file_con=fread($fp,$buffer);
      $file_count+=$buffer;
      echo $file_con;
    }
    //關閉開啟的檔案
    fclose($fp);
    //下載完成後刪除檔案
    if($file_count >= $file_size)
    {
     unlink("./doc/".$fileName);
    }



    僅供參考
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章