将csv上传到Codeigniter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将csv上传到Codeigniter相关的知识,希望对你有一定的参考价值。
有没有其他人在将csv文件上传到Codeigniter时遇到问题?我觉得很烦人“不允许你试图上传的文件类型。”错误,即使我已经明确设置了上传类型。这是我的代码(应该是相当标准的东西):
function doUpload() {
$config['upload_path'] = 'uploads/';
$config['allowed_types'] = 'text/plain|text/csv|csv';
$config['max_size'] = '5000';
$config['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 = "uploads/" . $file_info['file_name'];
$this->addfromcsv($csvfilepath);
}
}
我试图覆盖我允许的类型中的所有基础 - 也许我错过了一个?感谢您的帮助!
不幸的是,没有官方规范,所以它们中有很多:最缺少的是那些,
text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext
你不太可能遇见另一个。
我通过将cbrandolino建议的mimetypes添加到config / mimes.php(很棒的jljohnstone)来实现它。所以我的$ mimes的csv属性现在看起来像这样:
'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel')
我在上传.csv文件时遇到了同样的问题。我通过在OS X终端中使用file -I file.csv
确定mime类型来解决它。它报告mime类型是'text / plain'所以我将它添加到config / mimes.php文件中。
- Codeigniter 2.2.0 -
我对上传库进行了快速调试,我发现有时在不同服务器上运行的相同源代码将识别具有不同文件类型的相同CSV文件(即服务器1将CSV文件识别为:application / vnd.ms- excel但服务器2识别相同的CSV文件:text / xc)。
我的修复是在application / config / mimes.php中添加由服务器识别的文件类型。因此,我的mimes.php文件中的csv数组看起来像:'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/x-c')
。
我在codeigniter上尝试了许多上传csv文件的东西: -
我将mime类型(application / vnd.ms-excel)添加到mime类型文件,但是平均问题是codeigniter只接受文件名userfile。如果你要设置文件名userfile那么它的工作原理。
我想可能有另一种方式,但我找不到。
首先在允许的类型中输入'csv'
$config['allowed_types'] = 'csv';
$this->load->library('upload', $config);
第二步转到/config/mimes.php并更改'csv'数组元素,如下所示:
'csv' => array(
'text/x-comma-separated-values',
'text/comma-separated-values',
'application/octet-stream',
'application/vnd.ms-excel',
'application/x-csv',
'text/x-csv',
'text/csv',
'application/csv',
'application/excel',
'application/vnd.msexcel',
'text/plain'
),
以上是关于将csv上传到Codeigniter的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter 将部分 CSV 数据插入到 MYSQL 中,只有 id 和 date