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();
}
註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

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