📅  最后修改于: 2023-12-03 14:40:08.545000             🧑  作者: Mango
CodeIgniter是一个开源的PHP框架,旨在为开发人员提供一个简单且优雅的方式来编写Web应用程序。其中,文件上传是使用CodeIgniter开发Web应用程序时常用的功能之一。
CodeIgniter提供了方便的文件上传库,可以帮助开发人员轻松地实现文件上传功能。本文将介绍CodeIgniter中的文件上传功能,并提供示例代码。
CodeIgniter中的文件上传流程可以归纳为以下几个步骤:
在使用CodeIgniter实现文件上传功能前,需要配置一些文件上传参数。相关参数可以在CodeIgniter的配置文件config.php中进行设置。以下是常用的参数及其默认值:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
需要注意的是,这里是用PHP语言对CodeIgniter的参数进行设置,因此需要在config.php文件中加上open_tag和close_tag:
$config['open_tag'] = '<?php ';
$config['close_tag'] = ' ?>';
当配置好文件上传参数后,就可以创建包含文件上传功能的表单了。创建上传表单的代码如下:
<!-- 文件上传表单 -->
<form action="/upload/do_upload" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="上传" />
</form>
其中,表单的enctype必须设置为multipart/form-data,以便支持文件上传。通过input标签设置type属性为file来创建文件上传控件。
上传文件的处理分为两个阶段,首先需要验证上传文件信息,确保上传的文件符合要求;其次需要把上传的文件保存到服务器的指定目录中。
CodeIgniter提供了CI_Form_validation类,可以方便地验证表单输入是否符合要求。以下是一个验证上传文件的示例代码:
public function do_upload() {
// 加载上传库
$this->load->library('upload');
// 配置上传参数
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
$this->upload->initialize($config);
// 如果上传失败则输出错误信息
if (!$this->upload->do_upload('userfile')) {
$error = array('error' => $this->upload->display_errors());
echo $error;
} else {
// 上传成功
// 获取上传的文件信息
$data = array('upload_data' => $this->upload->data());
// 加载视图
$this->load->view('upload_success', $data);
}
}
当上传文件信息验证通过后,就需要把上传的文件保存到服务器指定的目录中。CodeIgniter提供了upload类来完成这个任务,代码如下:
public function do_upload() {
// 加载上传库
$this->load->library('upload');
// 配置上传参数
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
$this->upload->initialize($config);
// 如果上传失败则输出错误信息
if (!$this->upload->do_upload('userfile')) {
$error = array('error' => $this->upload->display_errors());
echo $error;
} else {
// 上传成功
// 获取上传的文件信息
$data = array('upload_data' => $this->upload->data());
// 加载视图
$this->load->view('upload_success', $data);
// 将上传的文件保存到服务器目录
$file_path = './uploads/' . $data['upload_data']['file_name'];
file_put_contents($file_path, file_get_contents($data['upload_data']['full_path']));
}
}
以上代码中,使用file_put_contents()和file_get_contents()函数来实现文件的保存。
本文介绍了如何使用CodeIgniter实现文件上传功能。通过配置上传参数、创建上传表单以及处理上传文件,开发人员可以轻松地为Web应用添加文件上传功能。