2014年3月14日 星期五

PHP 下載檔案(不用瀏覽器直接開啟)

一般我們作檔案上傳都直接透過 <a> 的 href 直接連結檔案,但隨著瀏覽器的進步,許多瀏覽器會預設為使用者直接開啟檔案,使的一般使用者不知道該如何下載檔案,因此就必須透過 PHP HEADER 作一個簡單的下載檔案的 function。

首先我們將這個小程式命名為 downloadFile.php,程式碼如下:
  1. <?php

  2.     if( isset($_GET['file']) ) {
  3.         header( "Content-type:application" );
  4.         header( "Content-Length: " .(string)(filesize($_GET['file'])) );
  5.         header( "Content-Disposition: attachment; filename=".$_GET['file'] );
  6.         readfile( $_GET['file'] );
  7.     }  //  if

  8. ?>

而在 Client 端的程式碼中的標籤 <a> 的 href 則要改為以下:
<a href="downloadfile.php?file=檔名.副檔名">Download</a>


最後提醒大家處理檔案下載要注意以下幾點:
  1. 檔案是否確實存在
  2. 若檔案不存在要處理例外以免暴露 Server 的資訊
  3. 檔案格式是否符合規格,該用怎樣的Content-Type解析檔案

只要注意處理以上的問題,就可以安全又簡單方便地下載檔案囉!

沒有留言:

張貼留言