php---header函數的文本文件下載

所謂實現文本文件的下載就是說當咱們點擊一個文本文件的連接的時候不是打開這個文件,而是彈出一個下載對話框讓咱們下載php

這就是今天討論的主要問題。PHP幫助文檔裏面關於PHP經過header觸發下載的說明比較簡單,而網上關於此方面的文章也少的可憐,有不少文章都沒法實現所須要的效果。今天我也來談一下這個方面的話題,若是你感受比網上的某些文章有所改進,那我就很滿足了。 

app

若是從準確的角度來講,那PHP文檔是最準確的,由於它很簡練的列出了實現文本類文件觸發下載所須要的三條語句,以PDF爲例就是: 函數

// We'll be outputting a PDF 
header('Content-type: application/pdf'); 
// It will be called downloaded.pdf 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 
// The PDF source is in original.pdf 
readfile('original.pdf');

這三句是正確的,可是在真正用的過程當中很容易出現一些沒法預料的問題,若是你是一個很仔細的人的話,也能夠很容易的避免這些問題。而我不是,因此我就遇到了這樣的問題,這裏就以個人問題來簡單說一下。 

對於第一句,應該沒啥說的,是必須的,只要改一下文檔的類型就行,例如是下載txt文件,那就改成header(‘Content-type: application/txt');,第二句也沒啥說的,就是爲你的下載文檔起一個名字,若是是txt文件的話,能夠改成header(‘Content-Disposition: attachment; filename=」downloaded.txt」‘);,第三句的問題就比較多了,readfile這個函數的意思就是讀取一個文件而後輸出,這裏文件的路徑須要是真實的文件路徑,若是是downloads文件夾下面的一個original.txt文件,能夠這樣寫readfile(‘downloads/original.txt');,而若是提交的頁面會輸出文本等字符,那麼下載到的文件會是原文件original.txt和提交的頁面輸出的文字的混合文件。我在這裏就缺乏了仔細的觀察,一看下面不對就當即去查代碼了,而沒發現上面的文本就是我須要的內容,發現了這部份內容,你可能就很快想到怎麼來解決這個問題了,也就是關閉提交到的頁面的文本內容的輸出。 

到這裏,咱們的問題就解決了,從而也就實現了文本文件連接被點擊的時候會觸發下載對話框的效果。spa

代碼以下:注意紅色部分code

$filename = '路徑+實際文件名';
//文件的類型
header('Content-type: application/pdf');
//下載顯示的名字
header('Content-Disposition: attachment; filename="保存時的文件名.pdf"');
readfile("$filename");
exit();

下面是網上經常使用的方法 文檔

if (isset($link)) 
{ 
Header("HTTP/1.1 303 See Other"); 
Header("Location: $link"); 
exit; 
}

$link就是文件的實際路徑。  it

相關文章
相關標籤/搜索