我正在用php开发一个网站,用户可以上传csv文件。单击“上传”按钮后,文件将重命名并以“upload”.time()格式保存。我需要在上传文件后显示上传文件的内容。 到目前为止,我已经能够正确上传文件,并且我已经使用静态文件名进行了测试,并且能够完美地读取csv文件。但是当我试图在上传后立即获得最近上传的文件名时,我没有得到任何结果。搜索整个网站,但没有得到任何适合我的解决方案。 我正在使用codeigniter 2.1.0。
控制器文件:
<?php
class Csv_ci extends CI_Controller {
function is_logged() {
$is_logged_in = $this->session->userdata('is_logged_in');
if (!isset($is_logged_in) || $is_logged_in != true)
return false;
else
return true;
}
function index() {
if ($this->is_logged() == TRUE) {
$this->load->model('Csv_model');
if ($this->input->post('upload')) {
$name = $this->Csv_model->do_upload();
//print_r($name);
if (isset($name)) {
$filePath = "localhost/map_ci/csv/" . $name;
//$filePath = './csv/bank_data.csv';
$row = 1;
if (($handle = fopen($filePath, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
$num = count($data);
$file_data[$row]['district_name'] = $data[1];
$file_data[$row]['bank_name'] = $data[2];
$file_data[$row]['area_name'] = $data[3];
$file_data[$row]['address'] = $data[4];
$row++;
}
fclose($handle);
}
$this->load->view('csvshow', array('file_data' => $file_data));
}
}
}
else $this->load->view('invalid_member');
}
}
模型文件:
<?php
class Csv_model extends CI_Model {
var $gallery_path;
var $gallery_path_url;
function Csv_model() {
parent::__construct();
$this->gallery_path = realpath(APPPATH . '../csv');
$this->gallery_path_url = base_url() . 'csv/';
}
function do_upload() {
$config = array(
'upload_path' => $this->gallery_path,
'allowed_types' => 'text/csv|csv|text/x-comma-separated-values|text/comma-separated-values|application/x-csv|text/x-csv|text/csv|application/csv|',
'max_size' => '5000',
'file_name' => 'upload' . time()
);
$this->load->library('upload', $config);
if (!$this->upload->do_upload())
echo $this->upload->display_errors();
else {
$file_info = $this->upload->data();
$csvfilepath = "csv/" . $file_info['file_name'];
$this->addfromcsv($csvfilepath);
$filename = $file_info['file_name'];
// print_r($filename);
return $filename;
}
}
}
检索我正在执行的文件名file_info['file_name']
。
请帮我找到解决方案。
更新:
从我的代码中删除$csvfilepath = "csv/" . $file_info['file_name'];
$this->addfromcsv($csvfilepath);
这两行之后,我当前的问题已得到解决。现在它返回上传的文件名.yet来检查是否完全正常工作。
更新2:代码运行良好 谢谢大家的帮助。
答案 0 :(得分:2)
您可以返回$config['upload_path']
&amp;的串联来自$config['file_name']
的{{1}}并使用它来阅读相应的文件。
答案 1 :(得分:0)
我认为问题出在$this->upload->data()
尝试从$config['file_name']
do_upload()
答案 2 :(得分:0)
$data = $this->upload->data();
print_r($data);
返回:
Array
(
[file_name] => mypic.jpg
[file_type] => image/jpeg
[file_path] => /path/to/your/upload/
[full_path] => /path/to/your/upload/jpg.jpg
[raw_name] => mypic
[orig_name] => mypic.jpg
[client_name] => mypic.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)`
所以:$file_name = $data['file_name'];
-OR -
$file = $data['file_path'].$data['file_name'];
答案 3 :(得分:0)
只需使用:
$this->upload->file_name;