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還在摸索中~~
謝版大的分享~~
不客氣^^