- 1. phpMyAdmin(支持對(duì)數(shù)據(jù)庫(kù)進(jìn)行建立、復(fù)制,刪除數(shù)據(jù)等...
- 2. QuickPHP V1.12.1(php腳本調(diào)試工具) 綠色免費(fèi)版
- 3. 維棠FLV視頻下載軟件(支持同時(shí)多個(gè)視頻文件下載功能...
- 4. phpMyAdmin(支持對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全操控) V3.4.2.0 F...
- 5. phpMyAdmin(通過(guò)互聯(lián)網(wǎng)控制操作MYSQL的軟件) V3.4....
- 6. phpMyAdmin 3.4.0 RC2 多語(yǔ)綠色版_很方便的網(wǎng)絡(luò)遠(yuǎn)M...
- 7. 音樂(lè)文件下載者Twister V2.2.9 英文破解版
- 8. 基于PHP和MySql的個(gè)人文章發(fā)布/管理平臺(tái)Swan v1.0.0
- 9. 強(qiáng)大的PHP在線(xiàn)購(gòu)物系統(tǒng)Avactis購(gòu)物車(chē)系統(tǒng) V2.1
- 10. 教你如何更好地與上司溝通這樣和上司說(shuō)話(huà) PDF電子書(shū)
教你php如何利用header實(shí)現(xiàn)文件下載
作者: 來(lái)源: 發(fā)布時(shí)間:2011-5-21 9:47:20 點(diǎn)擊:
本文章提供給各位學(xué)習(xí)分享,是關(guān)于教你PHP如何使用header實(shí)現(xiàn)文件下載,希望對(duì)各位有所幫助。
php中要怎么樣利用header實(shí)現(xiàn)文件下載呢?
在PHP幫助文檔里面關(guān)于PHP通過(guò)header觸發(fā)下載的說(shuō)明比較簡(jiǎn)單,而網(wǎng)上對(duì)這方面說(shuō)明的也很少,很多文章都無(wú)法實(shí)現(xiàn)我們所需要的效果。
下面以PDF文件格式為例進(jìn)行說(shuō)明:
<?php
// 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’);
?>
這三句是正確的,但是在真正用的過(guò)程中很容易出現(xiàn)一些無(wú)法預(yù)料的問(wèn)題,如果你是一個(gè)很仔細(xì)的人的話(huà),也可以很容易的避免這些問(wèn)題。而我不是,所以我就遇到了這樣的問(wèn)題,這里就以我的問(wèn)題來(lái)簡(jiǎn)單說(shuō)一下。
對(duì)于第一句,應(yīng)該沒(méi)啥說(shuō)的,是必須的,只要改一下文檔的類(lèi)型就行,例如是下載txt文件,那就改為header(’Content-type: application/txt’);。
第二句也沒(méi)啥說(shuō)的,就是為你的下載文檔起一個(gè)名字,如果是txt文件的話(huà),可以改為header(’Content-Disposition: attachment; filename=”downloaded.txt”‘);。
第三句的問(wèn)題就比較多了,readfile這個(gè)函數(shù)的意思就是讀取一個(gè)文件然后輸出,這里文件的路徑需要是真實(shí)的文件路徑,如果是downloads文件夾下面的一個(gè)original.txt文件,可以這樣寫(xiě)readfile(’downloads/original.txt’);,而如果提交的頁(yè)面會(huì)輸出文本等字符,那么下載到的文件會(huì)是原文件original.txt和提交的頁(yè)面輸出的文字的混合文件。我在這里就缺少了仔細(xì)的觀察,一看下面不對(duì)就立即去查代碼了,而沒(méi)發(fā)現(xiàn)上面的文本就是我需要的內(nèi)容,發(fā)現(xiàn)了這部分內(nèi)容,你可能就很快想到怎么來(lái)解決這個(gè)問(wèn)題了,也就是關(guān)閉提交到的頁(yè)面的文本內(nèi)容的輸出。
到這里,問(wèn)題就解決了,從而也就實(shí)現(xiàn)了文本文件鏈接被點(diǎn)擊的時(shí)候會(huì)觸發(fā)下載對(duì)話(huà)框的效果。
在PHP幫助文檔里面關(guān)于PHP通過(guò)header觸發(fā)下載的說(shuō)明比較簡(jiǎn)單,而網(wǎng)上對(duì)這方面說(shuō)明的也很少,很多文章都無(wú)法實(shí)現(xiàn)我們所需要的效果。
下面以PDF文件格式為例進(jìn)行說(shuō)明:
<?php
// 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’);
?>
這三句是正確的,但是在真正用的過(guò)程中很容易出現(xiàn)一些無(wú)法預(yù)料的問(wèn)題,如果你是一個(gè)很仔細(xì)的人的話(huà),也可以很容易的避免這些問(wèn)題。而我不是,所以我就遇到了這樣的問(wèn)題,這里就以我的問(wèn)題來(lái)簡(jiǎn)單說(shuō)一下。
對(duì)于第一句,應(yīng)該沒(méi)啥說(shuō)的,是必須的,只要改一下文檔的類(lèi)型就行,例如是下載txt文件,那就改為header(’Content-type: application/txt’);。
第二句也沒(méi)啥說(shuō)的,就是為你的下載文檔起一個(gè)名字,如果是txt文件的話(huà),可以改為header(’Content-Disposition: attachment; filename=”downloaded.txt”‘);。
第三句的問(wèn)題就比較多了,readfile這個(gè)函數(shù)的意思就是讀取一個(gè)文件然后輸出,這里文件的路徑需要是真實(shí)的文件路徑,如果是downloads文件夾下面的一個(gè)original.txt文件,可以這樣寫(xiě)readfile(’downloads/original.txt’);,而如果提交的頁(yè)面會(huì)輸出文本等字符,那么下載到的文件會(huì)是原文件original.txt和提交的頁(yè)面輸出的文字的混合文件。我在這里就缺少了仔細(xì)的觀察,一看下面不對(duì)就立即去查代碼了,而沒(méi)發(fā)現(xiàn)上面的文本就是我需要的內(nèi)容,發(fā)現(xiàn)了這部分內(nèi)容,你可能就很快想到怎么來(lái)解決這個(gè)問(wèn)題了,也就是關(guān)閉提交到的頁(yè)面的文本內(nèi)容的輸出。
到這里,問(wèn)題就解決了,從而也就實(shí)現(xiàn)了文本文件鏈接被點(diǎn)擊的時(shí)候會(huì)觸發(fā)下載對(duì)話(huà)框的效果。
[收藏此文章]
- 1. 教你編寫(xiě)安全的ASP代碼
- 2. 教你輕松備份和恢復(fù)Windows IIS服務(wù)器設(shè)置
- 3. 動(dòng)態(tài)網(wǎng)頁(yè)編程語(yǔ)言中的三大帝國(guó)ASP.JSP.PHP之間的較...
- 4. 教你清理Windows7字體提高開(kāi)機(jī)速度
- 5. ASP中AddHeader方法的介紹
- 6. 教你如何使用Calendar日歷選擇器
- 7. 關(guān)于PHP Parse Error: syntax error, unexpected $...
- 8. PHP的date()獲得比當(dāng)前時(shí)間少八小時(shí)的解決方法
- 9. php判斷值是否為空的實(shí)例分析
- 10. 教你配置xampp在php中使用sqlite3