CodeIgniter 版本 3.1.11 - 如何在 codeigniter 中 post csv 文件?

CodeIgniter version 3.1.11 - How to post csv file in codeigniter?

我是 codeigniter 的新手,我想 post 使用此输入法 $this->input->post() 的 csv 文件。 我正在使用 php 的 fopen() 函数读取 csv 文件,它需要参数中的文件名和路径。

这是我的 html 简单 html 文件。

<form method="post" class="form" action="<?php echo base_url('csv/store'); ?>" enctype="multipart/form-data">
    <label for="myfile">Select a file:</label>
    <input type="file" id="myfile" name="myfile" accept=".csv">
    <input type="text" id="name" name="name">
    <br />
    <input type="submit" class="submit" value="Submit"/>
</form>

这是我的控制器

public function store() {
        $x = $this->input->post('myfile');
        $y = $this->input->post('name');
        print_r($x);
        print_r($y);
        exit;      
}

如果我打印 $x 它没有输出,但是如果我打印 $y 它正在输出。

csv 是一个文件... 所以,使用 print_r($_FILES);

据我了解,您想使用 CI3 读取服务器上上传的 CSV 文件。

在您的控制器方法 store() 中,执行以下操作 -

  1. 您需要从服务器抓取上传的文件。 CI3 有一个库“upload”,使用它。
  2. 使用 fgetcsv() 和 fopen() 读取数据。

代码

public function store() {
        $fileName = $this->input->post('name');
        $uploadPath = "./upload/csv/";
        
        // Config the upload
        config['upload_path'] = $uploadPath; // some directory on the server with write permission
        
        // CHecking if present else create one
        if (!file_exists($config['upload_path'])) {
            if (!mkdir($concurrentDirectory = $config['upload_path'], 0777,
                    true) && !is_dir($concurrentDirectory)) {
                throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory));
            }
        }
        $config['allowed_types'] = 'pdf';
        $config['max_size'] = '51200'; //50 MB
        $config['encrypt_name'] = false;
        $config['file_ext_tolower'] = true;
        
        // Set file name
        $config['file_name'] = $fileName;

        // Load the library with config
        $this->load->library('upload', $config);
        
        // Do the upload
        if ( ! $this->upload->do_upload('paper')){
            // On error
            die($this->upload->display_errors());
        }else{
            // Upload was success, File is present in "./upload/csv/" 
            $csvFile = $uploadPath . $uploadData['file_name'];
            
            // Read the CSV file
            $row = 1;
            // Open the file and adjust the code as per your need
            if (($handle = fopen($csvFile, "r")) !== FALSE) {
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    $num = count($data);
                    echo "<p> $num fields in line $row: <br /></p>\n";
                    $row++;
                    for ($c=0; $c < $num; $c++) {
                        echo $data[$c] . "<br />\n";
                    }
                }
                fclose($handle);
            }
        }
}

指向成员:以人类可读的形式命名您的变量、方法、函数、常量。