首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP UploadFile 類完整使用指南:圖片上傳、縮略圖、驗證與資訊獲取

     編輯:PHP 綜合知識

前端表單必要屬性

<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 型別是否被伺服器修改。
  • 縮略圖未生成:需安裝 GD 擴展(php -m | grep gd),且原圖尺寸大於設定值。
  • 權限錯誤:chmod 755 Public/Uploads,確保 PHP 執行身分可寫入。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved