codeigniter教程之多文件上传使用示例


在CodeIgniter中,实现多文件上传功能可以通过修改控制器和视图文件来完成。下面是一个简单的多文件上传示例,包括控制器和视图的基本设置。

### 控制器 (`Upload.php`)

首先,确保你的CodeIgniter项目已经包含了文件上传库。然后,在控制器中创建一个方法来处理文件上传。


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Upload extends CI_Controller {

    public function index()
    {
        $this->load->view('upload_form'); // 加载上传表单视图
    }

    public function do_upload()
    {
        $config['upload_path']          = './uploads/';
        $config['allowed_types']        = 'gif|jpg|png';
        $config['max_size']             = 100;
        $config['max_width']            = 1024;
        $config['max_height']           = 768;

        $this->load->library('upload', $config);

        $filesCount = count($_FILES['userfile']['name']);
        for ($i = 0; $i < $filesCount; $i++) {
            $_FILES['userfile']['name']     = $_FILES['userfile']['name'][$i];
            $_FILES['userfile']['type']     = $_FILES['userfile']['type'][$i];
            $_FILES['userfile']['tmp_name'] = $_FILES['userfile']['tmp_name'][$i];
            $_FILES['userfile']['error']    = $_FILES['userfile']['error'][$i];
            $_FILES['userfile']['size']     = $_FILES['userfile']['size'][$i];

            if ( ! $this->upload->do_upload('userfile')) {
                $error = array('error' => $this->upload->display_errors());
                $this->load->view('upload_form', $error);
            } else {
                $data = array('upload_data' => $this->upload->data());
                $this->load->view('upload_success', $data);
            }
        }
    }
}

**注意**:这里有一个潜在的问题,如果第一个文件上传失败,将直接显示错误并停止后续文件的上传。你可能需要调整逻辑以适应所有文件的上传情况,比如记录成功和失败的文件。

### 视图 (`upload_form.php`)

然后,创建一个表单视图来让用户选择文件。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload Form</title>
</head>
<body>

<?php echo form_open_multipart('upload/do_upload');?>

    <input type="file" name="userfile[]" multiple="multiple">

    <input type="submit" value="upload" />

</form>

</body>
</html>

注意,`name="userfile[]"` 使用了方括号,这使得表单能够处理多文件输入。

### 视图 (`upload_success.php`)

最后,创建一个视图来显示上传成功的文件信息(这里只是一个简单的示例,你可能需要根据实际需要进行调整)。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload Success</title>
</head>
<body>

<h2>File Uploaded Successfully</h2>
<ul>
    <?php foreach ($upload_data as $item => $value):?>
        <li><?php echo ucfirst($item).': '.$value; ?></li>
    <?php endforeach; ?>
</ul>

</body>
</html>

这个示例展示了如何在CodeIgniter中实现多文件上传的基本流程。请根据你的具体需求调整文件上传的配置和视图显示。