php實作txt下載檔案的方法:1、建立PHP範例檔案;2、新增「function downloadtxt($file = "") {...}」程式碼;3、透過「downloadtxt(" classmsg");」方式下載檔案即可。
本文操作環境:windows7系統、PHP7.1版、Dell G3電腦。
php怎麼實作txt下載檔?
PHP實作txt檔案產生與下載
1.txt的生成
此函數運用在多條資料輸出,每個欄位使用空格隔開,下條資料就直接換行
public function dlfileftxt($data = array(),$filename = "unknown") { header("Content-type:application/octet-stream"); header("Accept-Ranges:bytes"); header("Content-Disposition:attachment;filename=$filename.txt"); header("Expires:0"); header("Cache-Control:must-revalidate,post-check=0,pre-check=0 "); header("Pragma:public"); if (!empty($data)){ foreach($data as $key=>$val){ foreach ($val as $ck => $cv) { $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv); } $data[$key]=implode(" ", $data[$key]); } echo implode("\n",$data); } exit(); }
dlfileftxt(array(1=>array("student"=>"小红","class"=>"一班"),2=>array("student"=>"老黄","class"=>"二班")),"班级信息");
txt檔名:班級資訊
txt內容:
小紅一班
老黃二班
程式碼解析:
"Content-type:application/octet-stream"
//只能提交二進制,只能提交一個二進制,如果提交文件的話,只能提交一個文件,後台接收參數只能有一個,而且只能是流(或者字節數組)
"Accept-Ranges: bytes"
//表明伺服器是否支持指定範圍請求及哪種類型的分段請求
"Content-Disposition:attachment;filename=$filename.txt"
//當然filename參數可以包含路徑訊息,但User-Agnet會忽略掉這些訊息,只會把路徑資訊的最後一部分做成檔名。當你在回應類型為application/octet- stream情況下使用了這個頭訊息的話,那就意味著你不想直接顯示內容,而是彈出一個"文件下載"的對話框,接下來就是由你來決定"開啟"還是"儲存" 了
(註:部分瀏覽器會辨識不了中文字串出現亂碼狀況,需要強制轉換字串的字元編碼UTF-8)
1.txt的下載
由於部分瀏覽器可以解釋txt文件,導致使用瀏覽器存取伺服器某個txt時候,會開啟一個新的視窗閱覽txt內容,而不是下載檔案
function downloadtxt($file = "") { if(!$file) return false; $filename = '/path/'.$file.'.txt'; //文件路径 header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=".basename($filename)); readfile($filename); }
downloadtxt("classmsg");
程式碼解析:
"Content-Type: application/force-download"
//強制下載檔案內容
readfile()
//本函數讀取文件,並將檔案內容寫入標準輸出裝置。傳回值是讀取的檔案大小
推薦學習:《PHP影片教學》
以上是php怎麼實作txt下載文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!