📜  在 codeigniter 中上传多个文件 - PHP (1)

📅  最后修改于: 2023-12-03 15:07:38.157000             🧑  作者: Mango

在 CodeIgniter 中上传多个文件

在Web开发中,经常需要用户上传文件,有时候用户需要上传多个文件,本文将介绍如何在 CodeIgniter 框架中实现上传多个文件的功能。

1. 表单

首先,需要在表单中添加 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>
2. 控制器

在控制器中处理上传的多个文件,可以使用 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());
             // 上传失败
         }
      }
   }
}
3. 视图

在视图中可以使用 $error 变量输出上传失败的错误信息。

if(isset($error)) {
   echo $error;
}
结论

上传多个文件的方式与上传单个文件的方式类似,只需要在表单中添加 multiple 属性和在控制器中循环处理上传的多个文件即可。使用 CodeIgniter 的 upload 类库,可轻松实现文件上传。