[PHP]好用的上傳 pear 模組 HTTP_Upload

在台大 ptt BBS 上面看到有人推文上傳功能可以交給 pear HTTP_Upload 來跟 PHP 搭配使用,自己去看了一下官方線上文件,教學還蠻容易的,大概看過範例就可以瞭解了,上傳之後的檔案,在搭配之前我寫的 [PHP] header下載檔案 搭配資料庫
* Can handle from one file to multiple files. * Safe file copying from tmp dir. * Easy detecting mechanism of valid upload, missing upload or error. * Gives extensive information about the uploaded file. * Rename uploaded files in different ways: as it is, safe or unique * Validate allowed file extensions * Multiple languages error messages support (es, en, de, fr, it, nl, pt_BR)
1. 首先下載官方檔案:點我 2. 撰寫 PHP 程式:
    
$root_path = './';
include($root_path . 'config.php');
/* 把 pear HTTP_Upload 檔案 include 進來 */
require_once($root_path . 'includes/pear/Upload.php');
$upload = new HTTP_Upload("en");
/* form 的 file 欄位名稱 */
$file = $upload->getFiles("upload_file_01");

if ($file->isValid()) 
{
  /* 設定上傳檔案之後,以亂數取檔名 */
  $file->setName("uniq");
  
  /* 檔案資訊 */
  echo "
";
  print_r($file->getProp());
  echo "
"; /* 印出所有檔案資訊 */ # $file->getProp("size") 檔案大小 # $file->getProp("name") 亂數取檔名 # $file->getProp("real") 上傳的真正檔名 # $file->getProp("ext") 上傳的副檔名 $moved = $file->moveTo("upload_data/1/"); if (!PEAR::isError($moved)) { $sql = "INSERT INTO " . FILES_TABLE . " (`userid` , `file_type`, `dateline` , `filesize` , `filename` , `file_real_name`, `extention`) VALUES ( '{$userdata[user_id]}', '1', '{$time}', '{$file->getProp("size")}', '{$file->getProp("name")}', '{$file->getProp("real")}', '{$file->getProp("ext")}')"; if( !($result = $db->sql_query($sql)) ) { die("Could not query config information " . $sql); } DisplayErrMsg("您已經完成上傳資料,在結束上傳日期前,都可以修改

". sprintf($lang['Click_return_forum'], "", "")); } else { echo $moved->getMessage(); } } elseif ($file->isMissing()) { echo "No file was provided."; } elseif ($file->isError()) { echo $file->errorMsg(); }