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

CodeIgniter 圖片上傳類庫完整指南

     編輯:PHP 相關知識

CodeIgniter 文件上傳類庫核心功能

CodeIgniter 內建的文件上傳類庫提供了強大且靈活的文件處理機制,支援自定義允許的文件類型、大小限制、尺寸限制以及上傳路徑配置。掌握這個類庫能讓你快速構建安全可靠的文件上傳功能。

基本上傳流程

  1. 建立包含 enctype="multipart/form-data" 屬性的 HTML 表單
  2. 用戶選擇文件並提交表單
  3. 伺服器端根據配置規則驗證文件
  4. 通過驗證後移動文件到指定目錄
  5. 返回上傳結果(成功資訊或錯誤訊息)

前端表單範例

<form method="post" action="admin/img_upload/" enctype="multipart/form-data">
  <div>
    <input type="file" name="userfile" size="20" class="button" />
    <input type="submit" value=" 上傳 " class="button" />
  </div>
</form>

後端控制器實作

public function img_upload() {
    $this->load->helper('url');
    
    $config['upload_path'] = './images/' . date('Ym', time()) . '/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['file_name'] = date('Y_m_d', time()) . '_' . sprintf('%02d', rand(0, 99));
    $config['max_size'] = '500';        // KB
    $config['max_width'] = '1024';      // 像素
    $config['max_height'] = '768';      // 像素
    
    $this->load->library('upload', $config);
    
    if ( ! $this->upload->do_upload('userfile')) {
        $error = array('error' => $this->upload->display_errors());
        // 處理錯誤:$error['error'] 包含錯誤訊息
    } else {
        $data = array('upload_data' => $this->upload->data());
        // 成功:$data['upload_data'] 包含完整檔案資訊
    }
}

核心配置參數詳細表

參數預設值說明
upload_path無上傳目錄路徑,必須可寫入,支援相對/絕對路徑
allowed_types無允許的 MIME 類型或副檔名,多個用 | 分隔
file_name無強制重命名檔案(含副檔名),副檔名必須在 allowed_types 中
overwriteFALSETRUE 覆蓋同名檔案,FALSE 在檔名後加數字避免衝突
max_size0最大檔案大小(KB),0 為不限制(仍受 php.ini 限制)
max_width0圖片最大寬度(像素),0 不限制
max_height0圖片最大高度(像素),0 不限制
max_filename0檔名最大長度,0 不限制
encrypt_nameFALSETRUE 將檔名加密為隨機字串(overwrite=FALSE 時生效)
remove_spacesTRUETRUE 將檔名空格替換為底線

常用方法速查

  • $this->upload->do_upload('field_name'):執行上傳,預設欄位名為 userfile,表單必須為 multipart 類型
  • $this->upload->display_errors():上傳失敗時返回錯誤訊息字串(不自動輸出)
  • $this->upload->data():返回包含檔案完整資訊的陣列(路徑、大小、類型、尺寸等)

最佳實踐建議

  1. 上傳目錄建議按年月分層(如 images/202401/),避免單一目錄檔案過多影響效能
  2. 務必設定 max_size 並配合 php.ini 的 upload_max_filesize、post_max_size
  3. 生產環境建議啟用 encrypt_name 防止惡意檔名攻擊
  4. 上傳後立即驗證 MIME 類型($this->upload->data('file_type')),不要只信任副檔名
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved