You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3.1.11 使用$this->input->post()无法获取提交的CSV文件如何解决

问题原因

通过 <input type="file"> 提交的文件不会被纳入普通POST字段集合,因此无法通过 $this->input->post() 方法获取。PHP 会将所有上传文件独立存储在 $_FILES 超全局变量中,CodeIgniter 也提供了专门的上传类处理文件上传逻辑。

解决方案

CodeIgniter 3 版本适配代码

你需要使用 CodeIgniter 内置的上传类获取上传文件,操作步骤如下:

  • 先在项目根目录新建 uploads/csv/ 文件夹,给文件夹设置755读写权限
  • 调整控制器store方法代码:
public function store() {
    // 普通文本字段正常获取
    $y = $this->input->post('name');
    print_r($y);

    // 配置上传参数
    $config['upload_path'] = './uploads/csv/';
    $config['allowed_types'] = 'csv';
    $config['max_size'] = 1024; // 限制文件最大1MB,可自行调整
    $this->load->library('upload', $config);

    // 处理上传逻辑
    if (!$this->upload->do_upload('myfile')) {
        // 打印上传错误信息
        $error = $this->upload->display_errors();
        print_r($error);
    } else {
        // 获取上传后的文件完整路径,可直接传入fopen使用
        $upload_data = $this->upload->data();
        $csv_file_path = $upload_data['full_path'];
        print_r($csv_file_path);

        // 后续读取CSV示例
        $handle = fopen($csv_file_path, 'r');
        // 可搭配fgetcsv等方法处理文件内容
        fclose($handle);
    }
    exit;      
}

CodeIgniter 4 版本适配代码

如果使用CI4,使用请求类的getFile方法获取上传文件即可:

public function store() {
    // 普通文本字段获取
    $y = $this->request->getPost('name');
    print_r($y);

    $myfile = $this->request->getFile('myfile');
    if ($myfile->isValid() && !$myfile->hasMoved()) {
        $save_path = './uploads/csv/';
        $csv_file_path = $myfile->move($save_path)->getPathname();
        // 后续fopen读取逻辑同上
    }
    exit;
}

你当前的表单已经配置了enctype="multipart/form-data"属性,符合文件上传的要求,不需要修改。

内容的提问来源于stack exchange,提问作者omkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:24:02