功能特色
- 支援 jpg、png、gif、bmp、swf、mp3、wma、zip、rar、doc 等多種型別
- 檔案大小限制(預設 10MB)
- 可選文字/圖片水印,九宮格位置
- 上傳後自動產生縮圖預覽
- 前端即時預覽選取圖片、一鍵複製連結/UBB 代碼
核心設定區
$uptypes = ['image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp',
'application/x-shockwave-flash','image/x-png','application/msword',
'audio/x-ms-wma','audio/mp3','application/vnd.rn-realmedia',
'application/x-zip-compressed','application/octet-stream'];
$max_file_size = 10000000; // 10MB
$destination_folder = 'up/';
$watermark = 1; // 1=加水印
$watertype = 1; // 1=文字 2=圖片
$waterposition = 2; // 1~5 九宮格
$waterstring = 'www.example.com';
$waterimg = 'watermark.gif';
$imgpreview = 1; // 產生預覽
$imgpreviewsize = 1; // 縮放比例
上傳處理流程
is_uploaded_file() 確認暫存檔存在
- 檢查大小
$_FILES['upfile']['size']
in_array($file['type'], $uptypes) 驗證 MIME
move_uploaded_file() 移至目的資料夾,檔名採 time().'.'.$ext 避免衝突
- 水印處理:
imagecreatetruecolor 建立畫布 → imagecopy 貼原圖 → imagestring 或 imagecopy 加水印 → 覆蓋存檔
- 縮圖預覽:直接輸出
<img src=... width=... height=...>
前端互動亮點
onchange="FileChange(this.value)" 即時顯示選取圖片縮圖
onmouseover="oCopy(this)" 滑鼠移入自動複製連結
- Checkbox 切換純連結 / UBB 代碼顯示
安全性補強建議
- 伺服器端再次以
getimagesize() 驗證真實圖片格式
- 上傳目錄設定
php_flag engine off 禁止腳本執行
- 檔名採雜湊值(如
sha1(microtime(true)))避免猜測
- 限制單一 IP 上傳頻率