<form action="__URL__/upload" method="post" enctype="multipart/form-data">
<input type="file" name="photo">
<input type="submit" value="上傳">
</form>
關鍵: enctype="multipart/form-data",否則 $_FILES 為空。
public function upload() {
import('ORG.Net.UploadFile');
$upload = new UploadFile();
// 基本設定
$upload->maxSize = 3145728; // 3MB
$upload->allowExts = ['jpg','png','jpeg','gif'];
$upload->savePath = './Public/Uploads/';
$upload->saveRule = 'uniqid'; // 唯一檔名,避免覆蓋
// 縮略圖設定(僅圖片有效)
$upload->thumb = true;
$upload->thumbPrefix = 'thumb_'; // 前綴
$upload->thumbMaxWidth = 300;
$upload->thumbMaxHeight = 300;
$upload->thumbRemoveOrigin = false; // true 則刪除原圖
// 執行上傳
if (!$upload->upload()) {
$this->error($upload->getErrorMsg());
} else {
$info = $upload->getUploadFileInfo();
// $info 陣列結構:
// [0] => ['name','type','size','key','savename','savepath','extension',...]
$this->success('上傳成功', '', $info);
}
}
| 屬性 | 說明 | 預設 |
|---|---|---|
| maxSize | 最大檔案大小(位元組) | 2M |
| allowExts | 允許副檔名陣列 | [] |
| savePath | 儲存目錄(需可寫) | ./ |
| saveRule | 檔名規則:uniqid / time / 字串 | uniqid |
| thumb | 是否生成縮略圖 | false |
| thumbPrefix | 縮略圖前綴(可多個:'s_,m_') | thumb_ |
| thumbMaxWidth/Height | 縮略圖最大寬/高 | 0 |
| thumbRemoveOrigin | 生成縮略圖後刪除原檔 | false |
| hashType | 檔案雜湊驗證:md5/sha1 | 無 |
$info = $upload->getUploadFileInfo();
/*
Array
(
[0] => Array
(
[name] => photo.jpg // 原始檔名
[savename] => 5f8a1b2c3d4e5.jpg // 儲存檔名
[savepath] => ./Public/Uploads/ // 儲存路徑
[size] => 123456 // 檔案大小
[extension] => jpg // 副檔名
[type] => image/jpeg // MIME
[key] => photo // 表單 name
)
)
*/
$filename = $info[0]['savepath'] . $info[0]['savename']; // 完整路徑
<input type="file" name="photos[]" multiple>
// 控制器無需修改,UploadFile 會自動處理 $_FILES 陣列
$info = $upload->getUploadFileInfo(); // 返回多筆資訊
allowExts 大小寫、MIME 型別是否被伺服器修改。php -m | grep gd),且原圖尺寸大於設定值。chmod 755 Public/Uploads,確保 PHP 執行身分可寫入。