pear檔案上傳http_upload範例補充

檔案上傳,幾乎是每個網路程式都會碰到的必備項目。pear當然也提供了這方面的函式來加強php撰寫的功能與方便性,可惜官方附的說明依然相當不足,在此另外撰寫一個小範例來補述它們已內建卻沒提到的功能。

範例重點:

require_once 'HTTP/Upload.php';

//建立http_upload物件,它的參數為錯誤訊息語言,預設值是http_upload('en')英文
$upload = new http_upload();

//setChmod設定上傳的檔案權限,要覆蓋相同檔案,設定0666讓它可重覆讀寫,預設值是0600
$upload->setChmod(0666);

//取得上傳檔案
$file = $upload->getFiles('portrait');

if ($file->isValid()) {

  //設定上傳後的檔案名稱
  $file->setName('portrait.jpg');
  
  //限制上傳檔案的副檔名,只接受jpg和JPG
  $file->setValidExtensions(array('jpg','JPG'),'accept');
  
  //儲存檔案
  $moved = $file->moveTo('./');
  
  if (!PEAR::isError($moved)) echo '圖像上傳成功:<br /><img src="./portrait.jpg" />';
  else echo '圖像上傳失敗:'.$moved->getMessage();

} else if ($file->isMissing()) {
	echo '沒有圖像上傳!';
} else if ($file->isError()) {
	echo '檔案上傳異常:'.$file->errorMsg();
}

範例補充:下載 | 測試
pear檔案上傳http_upload範例補充

註1:http_upload的安裝方式不贅述,可參閱官方網址文件

註2:它有個比較奇怪的地方是檔案上傳大小的限制方式,竟然是在client端設定MAX_FILE_SIZE隱藏值再傳遞到server,這應該會產生安全性的問題才對

註3:上述註2問題可透過server端函式,getProp(‘size’)取得檔案上傳大小再進行限制,更多檔案屬性,建議參閱http_upload文件Extensive information about uploaded files

註4:php官方原生的上傳函式及範例文POST method uploads

您可能也會喜歡…

2 個回應

  1. 梅干扣肉表示:

    這真的好讚呀~~~
    梅干對於php還在摸索中~~
    謝版大的分享~~

  2. ANDY表示:

    不客氣^^

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *