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() 中,执行以下操作 -
- 您需要从服务器抓取上传的文件。 CI3 有一个库“upload”,使用它。
- 使用 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);
}
}
}
指向成员:以人类可读的形式命名您的变量、方法、函数、常量。
我是 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() 中,执行以下操作 -
- 您需要从服务器抓取上传的文件。 CI3 有一个库“upload”,使用它。
- 使用 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);
}
}
}
指向成员:以人类可读的形式命名您的变量、方法、函数、常量。