程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP中codeigniter文件上傳類代碼實例

PHP中codeigniter文件上傳類代碼實例

編輯:關於PHP編程

       codeigniter文件上傳類代碼實例

      文件上傳類

      CodeIgniter 的文件上傳類允許文件被上傳。您可以設置指定上傳某類型的文件及指定大小的文件。

      處理過程

      上傳文件普遍的過程:

      一個上傳文件用的表單,允許用戶選擇一個文件並上傳它。

      當這個表單被提交,該文件被上傳到指定的目錄。

      同時,該文件將被驗證是否符合您設定的要求。

      一旦文件上傳成功,還要返回一個上傳成功的確認窗口。

      這裡有一個簡短的教程來顯示這個過程。此後你將會找到相關的參考信息。

      創建上傳表單

      運用文本編輯器創建一個名為upload_form.php的文件,復制以下代碼並保存在applications/views/目錄裡:

      你會看到這裡運用到了一個表單輔助函數來創建表單的開始標簽,文件上傳需要一個 multipart form,因為這個表單輔助函數為你創建了一個合適的語句。你還會看到我們運用了一個$error變量,當用戶提交該表單出現錯誤時會顯示相關的出錯信息。

      上傳成功的頁面

      運用文本編輯器創建一個名為upload_success.php的文件。復制以下代碼保存到applications/views/目錄裡:

      Your file was successfully uploaded!

      $value):?>

      :

      控制器

      運用文本編輯器,創建一個名為upload.php的控制器.復制以下代碼並保存到applications/controllers/目錄裡:

      load->helper(array('form', 'url')); } function index() { $this->load->view('upload_form', array('error' => ' ' )); } function do_upload() { $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '100'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } } } ?>

      上傳文件目錄

      你還需要一個目標文件夾來存儲上傳的圖片。在根目錄上創建一個名為uploads的文件並設置該文件的屬性為 777。(即可讀寫)

      提交表單

      要提交你的表單,輸入類似如下的URL:

      example.com/index.php/upload/

      你將看到一個上傳表單,任選一張(jpg, gif,或者png)圖片進行提交. 如果你在控制器裡設置的路徑是正確的,它將開始工作。

      初始化文件上傳類

      與CodeIgniter的其它一些類相似,文件上傳類用$this->load->library函數在控制器裡進行初始化:

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

      一旦文件上傳類被加載,對象將通過如下方法來引用:$this->upload

      偏好設置

      與其它庫類似,你將根據你的偏好設置來控制要被上傳的文件,在控制器裡,你建立了如下的偏好設置:

      $config['upload_path'] = './uploads/';

      $config['allowed_types'] = 'gif|jpg|png';

      $config['max_size'] = '100';

      $config['max_width'] = '1024';

      $config['max_height'] = '768';

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

      // Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:

      //【如果你在 config文件夾內的 autoload.php 文件中自動加載了 upload 類,或者在構造函數內加載了的話,可以調用初始化函數 initialize 來加載設置。————本括號內由IT不倒翁翻譯,加入了自己的理解】

      $this->upload->initialize($config);

      以上偏好設置將被完全執行。以下是所有偏好設置參數的描述。

      偏好設置參數

      以下偏好設置參數是可用的。當你沒有特別指定偏好設置參數時,默認值如下:

      偏好設置 默認值 選項 描述

      upload_path None None 文件上傳路徑。該路徑必須是可寫的,相對路徑和絕對路徑均可以。

      allowed_types None None 允許上傳文件的MIME類型;通常文件擴展名可以做為MIME類型. 允許多個類型用豎線‘|’分開

      file_name None 想要使用的文件名

      如果設置了這個參數,CodeIgniter 將根據這裡設置的文件名來對上傳的文件進行重命名。文件名中的擴展名也必須是允許的文件類型。

      overwrite FALSE TRUE/FALSE (boolean) 是否覆蓋。該參數為TRUE時,如果上傳文件時碰到重名文件,將會把原文件覆蓋;如果該參數為FALSE,上傳文件重名時,CI將會在新文件的文件名後面加一個數字。

      max_size 0 None 允許上傳文件大小的最大值(以K為單位)。該參數為0則不限制。注意:通常PHP也有這項限制,可以在php.ini文件中指定。通常默認為2MB。

      max_width 0 None 上傳文件的寬度最大值(像素為單位)。0為不限制。

      max_height 0 None 上傳文件的高度最大值(像素為單位)。0為不限制。

      max_filename 0 None 文件名的最大長度。0為不限制。

      encrypt_name FALSE TRUE/FALSE (boolean) 是否重命名文件。如果該參數為TRUE,上傳的文件將被重命名為隨機的加密字符串。當你想讓文件上傳者也不能區分自己上傳的文件的文件名時,是非常有用的。當 overwrite 為 FALSE 時,此選項才起作用。

      remove_spaces TRUE TRUE/FALSE (boolean) 參數為TRUE時,文件名中的空格將被替換為下劃線。推薦使用。

      在配置文件裡設置偏好設置參數

      如果你不願意應用如上方法進行偏好設置,你可以用一個配置文件來取代它。簡單創建一個名為upload.php的文件,添加 $config數組到該文件裡,然後保存文件到:config/upload.php,它將被自動加載。當你把配置參數保存到該文件裡,你不需要用$this->upload->initialize函數進行手動加載。

      運用到的函數

      以下函數被運用

      $this->upload->do_upload()

      根據你的偏好配置參數執行操作。注意:默認情況下上傳的文件來自於提交表單裡名為userfile的文件域,並且該表單必須是 "multipart"類型:

      如果你想在執行do_upload函數之前自定義自己的文件域名稱,可通過以下方法實現:

      $field_name = "some_field_name";

      $this->upload->do_upload($field_name)

      $this->upload->display_errors()

      如果do_upload()返回失敗,顯示錯誤信息。此函數不會自動輸出,而是返回數據,所以你可以按你的要求安排。

      格式化錯誤

      上面的函數默認使用

      標記錯誤信息。你可以像這樣設置自己的分隔符。

      $this->upload->display_errors('

      ', '

      ');

      $this->upload->data()

      這是一個輔助函數,它返回你上傳文件的所有相關信息的數組。

      Array

      (

      [file_name] => mypic.jpg

      [file_type] => image/jpeg

      [file_path] => /path/to/your/upload/

      [full_path] => /path/to/your/upload/jpg.jpg

      [raw_name] => mypic

      [orig_name] => mypic.jpg

      [client_name] => mypic.jpg

      [file_ext] => .jpg

      [file_size] => 22.2

      [is_image] => 1

      [image_width] => 800

      [image_height] => 600

      [image_type] => jpeg

      [image_size_str] => width="800" height="200"

      )

      解釋

      這裡是對上面數組項的解釋。

      Item Description

      file_name 已上傳的文件名(包括擴展名)

      file_type 文件的Mime類型

      file_path 不包括文件名的文件絕對路徑

      full_path 包括文件名在內的文件絕對路徑

      raw_name 不包括擴展名在內的文件名部分

      orig_name 上傳的文件最初的文件名。這只有在設置上傳文件重命名(encrypt_name)時才有效。

      client_name 上傳的文件在客戶端的文件名。

      file_ext 文件擴展名(包括‘.’)

      file_size 圖像大小,單位是kb

      is_image 是否是圖像。 1 =是圖像。 0 = 不是圖像。

      image_width 圖像寬度.

      image_height 圖像高度

      image_type 文件類型,即文件擴展名(不包括‘.’)

      image_size_str 一個包含width和height的字符串。用於放在一個img標簽裡。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved