上传一个CSV到Codeigniter

有其他人有问题上传到Codeigniter的CSV文件? 我得到一个非常恼人的“你正在尝试上传的文件types是不允许的。” 错误,即使我已经非常明确地设置上传types。 这是我的代码(应该是相当标准的东西):

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); } } 

我试图覆盖我允许的types的所有基地 – 也许我错过了一个? 感谢您的帮助!

不幸的是没有官方的说明,所以其中有很多是最受欢迎的,

 text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext 

你很难再遇到另一个。

我通过将cbrandolino的build议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 Terminal中使用“file -I file.csv”来确定MIMEtypes,并报告说MIMEtypes是“text / plain”,所以我将它添加到了config / mimes.php文件中。

– Codeigniter 2.2.0

我在上传上做了一个快速debugging,发现有时运行在不同服务器上的相同源代码将识别具有不同文件types的相同CSV文件(即, 服务器1将CSV文件标识为: application / vnd.ms- excel服务器2识别相同的CSV文件: text / xc)

我的修补程序是在application / config / mimes.php中添加由服务器标识的文件types。 因此,从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文件:

我添加MIMEtypes( application / vnd.ms-excel )MIMEtypes文件,但意味着codeigniter将只接受文件名称userfile 。 如果你将设置文件名称userfile那么它的作品。

我想可能还有另一种方法,但我找不到。