在作一個網站的發佈做業模塊,想經過上傳做業圖片實現發佈做業功能。如今把實現過程介紹一下,代碼部分會有相應的註釋以幫助理解,適合新手小白參考,但願大神閱後留下指導,莫笑~php
新建一個文件 upload_form.php ,放入以下代碼,並保存到 application/views/ 目錄下:html
<html> <head> <title>Upload Form</title> </head> <body> <!-- 這是手冊中給出的,但是我沒有用因此註釋掉了 --> <!-- <?php echo $error;?> --> <!-- 建立 form 的起始標籤,文件上傳須要使用multipart表單,控制器中的輔助函數能夠幫你正確生成它 --> <?php echo form_open_multipart('upload/do_upload');?> <!-- 一個文本輸入框,do_upload方法默認上傳文件的表單名爲userfile,因此這裏的name屬性值要與其相對應 --> <input type="file" name="userfile" size="20" /> <!-- 符合XHTML規範,孤立標籤都須要自行封閉。在這裏可用可不用 --> <br /><br /> <!-- 這是一個提交按鈕 --> <input type="submit" value="upload" /> <!-- form 結束標籤,對應前面的起始標籤 --> </form> </body> </html>
新建一個文件 upload_success.php ,放入以下代碼,並保存到 application/views/ 目錄下:數組
<html> <head> <title>Upload Form</title> </head> <body> <!-- 提示上傳成功的標題文字 --> <h3>Your file was successfully uploaded!</h3> <ul> <!-- 循環語句每次循環中,當前單元$upload_data的值被賦給 $value 而且數組內部的指針向前移一步,除了當前單元的值之外,鍵值也會在每次循環中被賦給變量$item --> <?php foreach ($upload_data as $item => $value):?> <!-- 以列表的形式輸出$item的值和$value的值 --> <li><?php echo $item;?>: <?php echo $value;?></li> <!-- 循環結束的標誌 --> <?php endforeach; ?> </ul> <!-- 其中的'upload'位置填寫相應Controller/method的URL,anchor()是建立連接的函數,Upload Another File!是連接的名稱 --> <p><?php echo anchor('upload', 'Upload Another File!'); ?></p> </body> </html>
新建一個控制器 Upload.php ,放入以下代碼,並保存到 application/controllers/ 目錄下:app
<?php class Upload extends CI_Controller { public function __construct() { parent::__construct();//調用父類中的構造函數 $this->load->helper(array('form', 'url'));//加載輔助函數,幫助生成上傳頁面的form的起始標籤 } public function index() { $this->load->view('upload_form');//加載文件上傳頁面 } public function do_upload()//執行上傳的關鍵函數 { $config['upload_path'] = './uploads/';//文件即將上傳到的目錄路徑,注意這裏常常出錯 $config['allowed_types'] = 'gif|jpg|png';//容許上的文件 MIME 類型 $config['max_size'] = 100;//容許上傳文件大小的最大值(單位 KB),設置爲 0 表示無限制 $config['max_width'] = 1024;//圖片的最大寬度(單位爲像素),設置爲 0 表示無限制 $config['max_height'] = 768;//圖片的最小高度(單位爲像素),設置爲 0 表示無限制 $this->load->library('upload', $config);//初始化文件上傳類,其中$this->load->library('類名'); if ( ! $this->upload->do_upload('userfile'))//若是不知足條件 { $error = array('error' => $this->upload->display_errors());//獲取錯誤信息 print_r($error);//打印錯誤信息 //$this->load->view('upload_form', $error);手冊中給出的,未使用 } else { $data = array('upload_data' => $this->upload->data());//把上傳文件的相關數據賦給$data變量 $this->load->view('upload_success', $data);//加載上傳成功頁面,將上傳文件的相關數據一併加載 } } } ?>
在 CodeIgniter 的安裝根目錄下建立一個 uploads 目錄,用來保存上傳的圖片。函數
使用相似於下面的 URL 來方法你的站點:網站
example.com/index.php/upload/
或者this
http://localhost/index.php/項目名/控制器名
經過以上操做,你將看到一個上傳文件的表單,嘗試着上傳一個圖片文件(jpg、gif 或 png 均可以), 若是你的控制器中路徑設置正確,你就能夠成功上傳文件了。url