首頁 >後端開發 >PHP問題 >php怎麼實作txt下載文件

php怎麼實作txt下載文件

藏色散人
藏色散人原創
2021-09-21 09:29:555086瀏覽

php實作txt下載檔案的方法:1、建立PHP範例檔案;2、新增「function downloadtxt($file = "") {...}」程式碼;3、透過「downloadtxt(" classmsg");」方式下載檔案即可。

php怎麼實作txt下載文件

本文操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn