單次上傳圖片,自動生成多張不同尺寸縮略圖(如:大圖 300x150、小圖 100x50)。
public function dz_upload() {
if (isset($_FILES['ori_img'])) {
$upload = new \Think\UploadFile();
// 基礎配置
$upload->maxSize = 3000000;
$upload->savePath = './Public/Uploads/thumb/';
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');
$upload->saveRule = 'time';
$upload->uploadReplace = true;
// 縮略圖核心配置
$upload->thumb = true;
$upload->thumbMaxWidth = '100,300'; // 多尺寸寬度
$upload->thumbMaxHeight = '50,150'; // 對應高度
$upload->thumbPrefix = 'm_,s_'; // 前綴:m_對應第一組、s_對應第二組
$upload->thumbPath = './Public/Uploads/thumb/' . date('Ymd') . '/';
$upload->thumbRemoveOrigin = false; // 保留原圖
// 子目錄配置
$upload->autoSub = true;
$upload->subType = 'date';
$upload->dateFormat = 'Ymd';
if (!$upload->upload()) {
echo json_encode(['msg' => $upload->getErrorMsg(), 'status' => 0]);
} else {
$info = $upload->getUploadFileInfo();
$savename = $info[0]['savename'];
// 解析路徑構建返回
$parts = explode('/', $savename);
$result = $parts[0] . '/_hz' . $parts[1]; // 業務自定義前綴
echo json_encode(['status' => 1, 'msg' => $result]);
}
}
}
| 屬性 | 值 | 說明 |
|---|---|---|
| thumbMaxWidth | '100,300' | 逗號分隔多組寬度,順序對應 thumbPrefix |
| thumbMaxHeight | '50,150' | 對應高度,等比縮放以寬高較小者為準 |
| thumbPrefix | 'm_,s_' | 多組前綴,下劃線分隔,空前綴表示原圖 |
| thumbRemoveOrigin | false | true=刪除原圖僅保留縮略圖 |
原圖: 20240115/5a5b5c5d5e5f.jpg
縮略圖1: 20240115/m_5a5b5c5d5e5f.jpg (100x50)
縮略圖2: 20240115/s_5a5b5c5d5e5f.jpg (300x150)
$controller = A("Index"); // 實例化 Index 控制器
$controller->dz_upload();
ThinkPHP 3.2.2 核心包不包含 `UploadFile`、`UploadImage` 類,需:
掌握 `thumbMaxWidth/Height/Prefix` 三參數聯動,即可靈活實現任意多規格縮略圖自動生成。