程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php強制下載類型的實現代碼

php強制下載類型的實現代碼

編輯:關於PHP編程

復制代碼 代碼如下:
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將文件下載下來而不是超鏈接下載,這樣可以減少盜鏈的情況!將文件給浏覽器讓浏覽器下載

以txt類型為例

由於現在的浏覽器已經可以識別txt文檔格式,如果只給txt文檔做一個文字鏈接的話,點擊後只是打開一個新窗口顯示txt文件的內容,並不能實現點擊下載的目的。當然這個問題的解決辦法也可以是將txt文件改名為浏覽器不認識的文件(比如rar),這樣的話,由於浏覽器不能識別rar類型的文件,只能讓用戶下載了。還有一種辦法,就是利用代碼通過header設置文檔的格式來實現點擊下載的目的。
PHP代碼如下:
復制代碼 代碼如下:
$filename = '/path/'.$_GET['file'].'.txt'; //文件路徑
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
readfile($filename);

簡要說明:
第一個header函數設置Content-Type的值為application/force-download;
第二個header函數設置要下載的文件。注意這裡的filename是不包含路徑的文件名,filename的值將來就是點擊下載後彈出對話框裡面的文件名,如果帶路徑的話,彈出對話框的文件名就是未知的;
最後通過readfile函數,將文件流輸出到浏覽器,這樣就實現了txt文件的下載。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved