阿大說,爲作一張配圖,還要換系統,好苦13 ╮(╯-╰)╭php
在使用CI以前,咱們來看看用原生代碼是如何上傳的,作個對比,就知道CI有多麼方便~html
首先建立一個視圖ci/application/views/uploader1.php數據庫
當表單須要上傳時,應填寫'enctype="multipart/form-data"'segmentfault
<form action="upload/up" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" name="sub" value="submit"> </form>
而後寫控制器ci/application/controllers/upload1.php數組
move_uploaded_file() 是PHP的一個內置方法,把上傳好的文件從緩存處移到你想要的位置緩存
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Upload1 extends CI_Controller { function index() { $this -> load -> view('uploader1.php'); //調用視圖 } function up() //這個就是視圖裏action調用的上傳接口 { if (!empty($_POST['sub'])) { //當提交的時候 // var_dump($_FILES['upfile']); 能夠打印看看上傳文件的信息 $f = $_FILES['upfile']; //把文件信息賦給一個變量,方便調用 if ($f['size'] > 102400) { //限制文件大小 echo "too large"; } else { if ($f['type'] == 'image/png') { //限制文件類型爲png $t = time(); // 時間戳 $s = '.png'; move_uploaded_file($f['tmp_name'], move_uploaded_file($f['tmp_name'], './uploads/'.$t.$s); //$f['tmp_name']是上傳好的文件從緩存文件,'/uploads/$t$s'是咱們要移動到的文件夾,在根目錄下本身建立的uploads文件夾。'./uploads/'.$t.$s 是變量的值進行字符串拼接,把文件以時間戳命名 } } } } } ?>
如今能夠訪問localhost/ci/index.php/upload進行上傳文件了app
CI有一個豐富的上傳類upload,它的源碼放在system/libraries/upload.php。咱們能夠輕鬆的調用它完成一系列操做。ide
首先建立一個視圖ci/application/views/uploader2.phpcodeigniter
注意此處 action 改成 'upload2/up',其餘不變post
<form action="upload2/up" method="post" enctype="multipart/form-data"> <input type="file" name="upfile"> <input type="submit" name="sub" value="submit"> </form>
而後寫控制器ci/application/controllers/upload2.php
名稱 | 介紹 |
---|---|
upload_path | 文件上傳路徑。該路徑必須是可寫的,相對路徑和絕對路徑都可以。 |
allowed_types | 容許上傳文件的MIME類型;一般文件擴展名能夠作爲MIME類型. 容許多個類型用豎線分開 |
file_name | 想要使用的文件名,若是設置了這個參數,CodeIgniter 將根據這裏設置的文件名來對上傳的文件進行重命名。文件名中的擴展名也必須是容許的文件類型。 |
max_size | 容許上傳文件大小的最大值(以K爲單位)。該參數爲0則不限制。注意:一般PHP也有這項限制,能夠在php.ini文件中指定。一般默認爲2MB。 |
max_width | 上傳文件的寬度最大值(像素爲單位)。0爲不限制。 |
max_height | 上傳文件的高度最大值(像素爲單位)。0爲不限制。 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Upload2 extends CI_Controller { function index() { $this -> load -> view('uploader2.php'); } function up() { // 把須要的配置放入config數組 $config['upload_path'] = './uploads'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '102400'; $this -> load -> library('upload', $config); //調用CI的upload類 $this -> upload -> do_upload('upfile'); //使用do_upload('上傳框的name')方法進行上傳 // 如下代碼爲拓展的,非必要 if ($this -> upload -> do_upload('upfile')) { //上傳成功 $data = array('upload_data' => $this -> upload -> data()); //將文件信息存入數組 var_dump($data); //打印文件信息 } else { //上傳失敗 $error = array('error' => $this -> upload -> display_errors());//將錯誤信息存入數組 var_dump($error); //打印錯誤信息 } } } ?>
如今能夠訪問localhost/ci/index.php/upload2進行上傳文件了
CI的上傳類是咱們上傳更方便,代碼量少,而且很整潔
跟着阿大學CodeIgniter (一)——瞭解MVC
跟着阿大學CodeIgniter (二)—— 文件上傳
跟着阿大學CodeIgniter (三)—— 操做數據庫