CodeIgniter框架之上傳圖片功能的實現

在作一個網站的發佈做業模塊,想經過上傳做業圖片實現發佈做業功能。如今把實現過程介紹一下,代碼部分會有相應的註釋以幫助理解,適合新手小白參考,但願大神閱後留下指導,莫笑~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

相關文章
相關標籤/搜索