📅  最后修改于: 2023-12-03 15:07:38.157000             🧑  作者: Mango
在Web开发中,经常需要用户上传文件,有时候用户需要上传多个文件,本文将介绍如何在 CodeIgniter 框架中实现上传多个文件的功能。
首先,需要在表单中添加 enctype="multipart/form-data"
属性,这样在提交表单时才能传输文件数据。同时需要使用 multiple
属性使其支持多选。
<form method="post" action="upload_form" enctype="multipart/form-data">
<input type="file" name="userfiles[]" multiple="multiple" />
<input type="submit" value="Upload" />
</form>
在控制器中处理上传的多个文件,可以使用 upload
类库实现。需要在 autoload.php
中加载类库。
// 加载类库
$autoload['libraries'] = array('upload');
public function upload_form() {
if ($this->input->post('submit') && !empty($_FILES['userfiles']['name'])) {
$files = $_FILES['userfiles'];
$count = count($_FILES['userfiles']['name']);
// 循环上传文件
for($i=0; $i<$count; $i++) {
$_FILES['userfile']['name'] = $files['name'][$i];
$_FILES['userfile']['type'] = $files['type'][$i];
$_FILES['userfile']['tmp_name'] = $files['tmp_name'][$i];
$_FILES['userfile']['error'] = $files['error'][$i];
$_FILES['userfile']['size'] = $files['size'][$i];
// 配置上传文件参数
$config['upload_path'] = './uploads/'; // 上传路径
$config['allowed_types'] = 'gif|jpg|jpeg|png'; // 支持的文件类型
$config['max_size'] = '1024'; // 最大上传文件大小
// 初始化上传类配置
$this->upload->initialize($config);
if ($this->upload->do_upload('userfile')) {
$data = $this->upload->data();
// 上传成功
} else {
$error = array('error' => $this->upload->display_errors());
// 上传失败
}
}
}
}
在视图中可以使用 $error
变量输出上传失败的错误信息。
if(isset($error)) {
echo $error;
}
上传多个文件的方式与上传单个文件的方式类似,只需要在表单中添加 multiple
属性和在控制器中循环处理上传的多个文件即可。使用 CodeIgniter 的 upload
类库,可轻松实现文件上传。