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

相关文章
相关标签/搜索