在做一个网站的发布作业模块,想通过上传作业图片实现发布作业功能。现在把实现过程介绍一下,代码部分会有相应的注释以帮助理解,适合新手小白参考,希望大神阅后留下指导,莫笑~
创建上传表单页面
新建一个文件 upload_form.php ,放入如下代码,并保存到 application/views/ 目录下:
Upload Form创建上传成功页面
新建一个文件 upload_success.php ,放入如下代码,并保存到 application/views/ 目录下:
Upload FormYour file was successfully uploaded!
<?php foreach ($upload_data as $item => $value):?>
<?php echo $item;?>: <?php echo $value;?>编写上传文件控制器
新建一个控制器 Upload.php ,放入如下代码,并保存到 application/controllers/ 目录下:
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/
或者
http://localhost/index.php/项目名/控制器名
通过以上操作,你将看到一个上传文件的表单,尝试着上传一个图片文件(jpg、gif 或 png 都可以), 如果你的控制器中路径设置正确,你就可以成功上传文件了。