php強(qiáng)制下載類型的實(shí)現(xiàn)代碼
更新時(shí)間:2011年04月21日 22:58:16 作者:
有時(shí)需要一些文件不能在線打開(kāi),而是執(zhí)行后需要下載,這時(shí)就用這個(gè)函數(shù)就可以解決了
復(fù)制代碼 代碼如下:
function downloadFile($file){
/*Coded by Alessio Delmonti*/
$file_name = $file;
$mime = 'application/force-download';
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
readfile($file_name); // push it out
exit();
}
php將文件下載下來(lái)而不是超鏈接下載,這樣可以減少盜鏈的情況!將文件給瀏覽器讓瀏覽器下載
以txt類型為例
由于現(xiàn)在的瀏覽器已經(jīng)可以識(shí)別txt文檔格式,如果只給txt文檔做一個(gè)文字鏈接的話,點(diǎn)擊后只是打開(kāi)一個(gè)新窗口顯示txt文件的內(nèi)容,并不能實(shí)現(xiàn)點(diǎn)擊下載的目的。當(dāng)然這個(gè)問(wèn)題的解決辦法也可以是將txt文件改名為瀏覽器不認(rèn)識(shí)的文件(比如rar),這樣的話,由于瀏覽器不能識(shí)別rar類型的文件,只能讓用戶下載了。還有一種辦法,就是利用代碼通過(guò)header設(shè)置文檔的格式來(lái)實(shí)現(xiàn)點(diǎn)擊下載的目的。
PHP代碼如下:
復(fù)制代碼 代碼如下:
$filename = '/path/'.$_GET['file'].'.txt'; //文件路徑
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
readfile($filename);
簡(jiǎn)要說(shuō)明:
第一個(gè)header函數(shù)設(shè)置Content-Type的值為application/force-download;
第二個(gè)header函數(shù)設(shè)置要下載的文件。注意這里的filename是不包含路徑的文件名,filename的值將來(lái)就是點(diǎn)擊下載后彈出對(duì)話框里面的文件名,如果帶路徑的話,彈出對(duì)話框的文件名就是未知的;
最后通過(guò)readfile函數(shù),將文件流輸出到瀏覽器,這樣就實(shí)現(xiàn)了txt文件的下載。
您可能感興趣的文章:
- php下載遠(yuǎn)程文件類(支持?jǐn)帱c(diǎn)續(xù)傳)
- PHP使用range協(xié)議實(shí)現(xiàn)輸出文件斷點(diǎn)續(xù)傳代碼實(shí)例
- 關(guān)于php支持分塊與斷點(diǎn)續(xù)傳文件下載功能代碼
- php斷點(diǎn)續(xù)傳之如何分割合并文件
- 解決PHP超大文件下載,斷點(diǎn)續(xù)傳下載的方法詳解
- 讓PHP支持?jǐn)帱c(diǎn)續(xù)傳的源碼
- PHP文件下載類
- PHP寫(xiě)的資源下載防盜鏈類分享
- 使用ThinkPHP自帶的Http類下載遠(yuǎn)程圖片到本地的實(shí)現(xiàn)代碼
- 發(fā)布一個(gè)用PHP fsockopen寫(xiě)的HTTP下載的類
- php實(shí)現(xiàn)的支持?jǐn)帱c(diǎn)續(xù)傳的文件下載類
相關(guān)文章
JavaScript+PHP實(shí)現(xiàn)視頻文件分片上傳的示例代碼
這篇文章主要介紹了基于JavaScript+PHP實(shí)現(xiàn)視頻文件分片上傳,視頻文件分片上傳,整體思路是利用JavaScript將文件切片,然后循環(huán)調(diào)用上傳接口 upload.php 將切片上傳到服務(wù)器,文中有詳細(xì)代碼供大家參考,需要的朋友可以參考下2024-02-02PHP mysql事務(wù)問(wèn)題實(shí)例分析
這篇文章主要介紹了PHP mysql事務(wù)問(wèn)題,結(jié)合實(shí)例形式分析了PHP操作MySQL的myisam數(shù)據(jù)庫(kù)實(shí)現(xiàn)控制事務(wù)的相關(guān)技巧,需要的朋友可以參考下2016-01-01php 定義404頁(yè)面的實(shí)現(xiàn)代碼
今天需要用php輸出一個(gè)404錯(cuò)誤頁(yè)面,然后加載404頁(yè)面輸出,各個(gè)方便給用戶與搜索引擎好的用戶體驗(yàn)2012-11-11ADODB結(jié)合SMARTY使用~超級(jí)強(qiáng)
ADODB結(jié)合SMARTY使用~超級(jí)強(qiáng)...2006-11-11php可應(yīng)用于面包屑導(dǎo)航的迭代尋找家譜樹(shù)實(shí)現(xiàn)方法
這篇文章主要介紹了php可應(yīng)用于面包屑導(dǎo)航的迭代尋找家譜樹(shù)實(shí)現(xiàn)方法,涉及php迭代的技巧與應(yīng)用方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02php foreach循環(huán)中使用引用的問(wèn)題
本文來(lái)給大家介紹php foreach循環(huán)中使用引用問(wèn)題分析與注意事項(xiàng),希望此文章對(duì)各位同學(xué)會(huì)有所幫助2013-11-11