本類別 uploadimage() 整合了檔案上傳驗證、圖片格式檢查、大小限制、自動建立目錄、等比例生成縮略圖(支援指定高寬或僅寬度)、可選水印圖層等功能,適合快速整合至 CMS、電商或會員系統。
<?php
function uploadimage(
$upname, // $_FILES 欄位名
$smallmark = 1, // 是否生成縮略圖
$dstsw, // 縮略圖寬度
$dstsh = 0, // 縮略圖高度(0 為等比)
$path_dim, // 大圖儲存路徑
$path_xim, // 縮略圖儲存路徑
$newname, // 新檔名(不含副檔名)
$smallname = 0, // 縮略圖檔名(0 同大圖)
$filetype = "null" // 強制副檔名
) {
// 1. 檢查上傳錯誤、大小、類型
// 2. 移動暫存檔至 $path_dim/$newname.$ext
// 3. getimagesize() 取得原圖尺寸
// 4. 若 $smallmark==1 進行縮略圖生成邏輯:
// - 計算目標尺寸(等比或固定)
// - imagecreatetruecolor() 建立畫布
// - imagecopyresampled() 高品質縮放
// - 依原格式 imagejpeg/png/gif 輸出
// 5. 回傳最終檔名
}
?>
<?php
// 表單
$result = uploadimage(
'myphoto', // 欄位名
1, // 生成縮略圖
200, // 縮略圖寬 200px
150, // 縮略圖高 150px(0 為等比)
'/var/www/uploads/big/', // 大圖目錄
'/var/www/uploads/small/', // 小圖目錄
'user_'.time() // 新檔名
);
echo "上傳成功:$result";
?>
mkdir($path, 0755, true))。$max_file_size 設為合理值(如 5MB = 5242880)。accept="image/*" 與 JS 預覽,提升使用者體驗。imagecopymerge() 疊加 Logo。