PHP 檔案下載 header設定
阿新 • • 發佈:2018-11-16
PHP 檔案下載 header設定
1、已知.txt檔案路徑,點選時彈出下載框下載該檔案。
public function downloadAction(){ $file_path = $_GET['url']; //檔案路徑 $file_name = trim($_GET['title']).'.txt'; //檔名;或直接從路徑上獲取 basename($file_path) header("Content-type: text/plain"); //Mime-Type型別 header("Content-Disposition:attachment;filename = ".$file_name); //彈出儲存框的形式下載檔案(附件) readfile($file_path); //返回從檔案中讀入的位元組數 die(); //方法結束 }
2、已經.txt檔案的路徑,點選時在瀏覽器開啟(檢視)該檔案。
header("Content-Disposition:inline;filename = ".$file_name); //在頁面內開啟檔案
總結:Content-Disposition屬性有兩種型別:inline 和 attachment
- inline :將檔案內容直接顯示在頁面;
- attachment:彈出對話方塊讓使用者下載。
3、下載較大的視訊檔案。 引用
/**
* @todo 下載檔案
* @param string $file 檔案路徑
*/
public function download($file){ //引用 https://blog.csdn.net/zhanqixuan22/article/details/47753927
set_time_limit(0); //程式最大的執行時間,單位為秒。如果設定為0(零),沒有時間方面的限制。
ini_set('memory_limit', '512M'); // 最大單執行緒的獨立記憶體使用量。也就是一個web請求,給予執行緒最大的記憶體使用量的定義。
header('Content-Type: application/octet-stream'); //octet-stream:是以流的形式下載檔案,這樣可以實現任意格式的檔案下載。
header('Content-Disposition: attachment; filename='.basename($file)); //以瀏覽器彈出儲存框形式下載檔案。
header('Content-Transfer-Encoding: binary'); //內容在傳輸過程中的編碼格式
readfile($file); //返回從檔案中讀入的位元組數
}