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

CodeIgniter 檔案上傳類庫完整指南:圖片上傳、驗證與配置詳解

     編輯:PHP 綜合知識

CodeIgniter 內建的 檔案上傳類庫 提供完整的上傳處理流程,支援檔案類型限制、尺寸檢查、重新命名、縮圖等功能。本文以圖片上傳為例,詳述表單建立、控制器處理與關鍵方法。

上傳流程概覽

  1. 前端表單提交檔案(需設 enctype="multipart/form-data");
  2. 控制器接收、配置上傳參數、載入類庫;
  3. 執行上傳並驗證;
  4. 根據結果回傳成功資訊或錯誤訊息。

前端表單範例

<form method="post" action="<?=base_url()?>admin/img_upload/" enctype="multipart/form-data">
  <div style="margin:0 0 0.5em 0em;">
    <input type="file" name="userfile" size="20" class="button" />
    <input type="submit" value=" 上傳 " class="button" />
  </div>
</form>

關鍵點:name="userfile" 為預設檔案欄位名稱,若不同需在 do_upload('custom_name') 指定。

控制器處理邏輯

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';       // px
    $config['max_height']       = '768';        // px

    $this->load->library('upload', $config);

    if (!$this->upload->do_upload()) {
        $error = array('error' => $this->upload->display_errors());
        // 載入錯誤視圖或回傳 JSON
    } else {
        $data = array('upload_data' => $this->upload->data());
        // 處理成功邏輯:記錄資料庫、回傳檔案資訊等
    }
}

常用配置項說明

配置項說明預設值
upload_path儲存路徑,需可寫入無
allowed_types允許副檔名,用 | 分隔無
file_name指定檔名(不含副檔名)原檔名
overwrite同名檔案是否覆蓋FALSE
max_size最大檔案大小(KB),0 為不限制0
max_width / max_height圖片最大寬高(px)0
encrypt_name是否加密檔名FALSE
remove_spaces檔名空格轉底線TRUE

核心方法

  • $this->upload->do_upload([$field_name]):執行上傳,成功回傳 TRUE,失敗回傳 FALSE;
  • $this->upload->display_errors([$open, $close]):取得錯誤訊息字串,不自動輸出,可自訂包裹標籤;
  • $this->upload->data():回傳上傳成功檔案的詳細資訊陣列(含 file_name、full_path、file_size、image_width 等)。

進階技巧

  • 動態建立目錄:上傳前檢查 upload_path 是否存在,不存在則 mkdir($path, 0755, true);
  • 多檔上傳:搭配 $_FILES['userfile']['name'] 為陣列時,需迴圈處理;
  • 上傳後處理:可串接 image_lib 進行縮圖、水印、裁切等操作。

善用上傳類庫的豐富配置,能快速建立安全、穩健的檔案上傳功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved