在作一个网站的发布做业模块,想经过上传做业图片实现发布做业功能。如今把实现过程介绍一下,代码部分会有相应的注释以帮助理解,适合新手小白参考,但愿大神阅后留下指导,莫笑~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