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

來源:互聯網
上載者:User

複製代碼 代碼如下: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檔案的下載。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.