将csv上载到Codeigniter
是否有其他人在将csv文件上载到Codeigniter时遇到问题?我得到了一个非常恼人的错误“你试图上传的文件类型是不允许的。”即使我已经非常明确地设置了上传类型。以下是我的代码(应该是相当标准的东西): 我试着用我允许的类型覆盖所有的基础-也许我错过了一个?将csv上载到Codeigniter,codeigniter,upload,mime-types,Codeigniter,Upload,Mime Types,是否有其他人在将csv文件上载到Codeigniter时遇到问题?我得到了一个非常恼人的错误“你试图上传的文件类型是不允许的。”即使我已经非常明确地设置了上传类型。以下是我的代码(应该是相当标准的东西): 我试着用我允许的类型覆盖所有的基础-也许我错过了一个? 谢谢你的帮助 不幸的是,没有官方的规范,所以有很多:最流行的是 text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|
谢谢你的帮助 不幸的是,没有官方的规范,所以有很多:最流行的是
text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext
你不太可能遇到其他人。我上传.csv文件时也遇到同样的问题。我通过在OSX终端中使用
file-I file.csv
确定mime类型来解决这个问题。它报告说mime类型是“text/plain”,所以我将其添加到config/mimes.php文件中。我通过向config/mimes.php文件中添加“的建议mime类型”使其正常工作(很好的提示)。因此,我的$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')
--Codeigniter2.2.0--
我对上传库进行了快速调试,发现有时运行在不同服务器上的相同源代码会识别具有不同文件类型的相同CSV文件(即服务器1将CSV文件标识为:应用程序/vnd.ms excel,但服务器2将CSV文件标识为:文本/x-c)
我的修复方法是在application/config/mimes.php中添加由出现问题的服务器标识的文件类型。因此,mimes.php文件中的csv数组如下所示:
'csv'=>数组('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/csv','application/csv','application/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'
),
谢谢,但它毕竟不起作用。似乎很愚蠢,没有办法将它设置为允许所有文件类型。至少在开发过程中,即使他们不想在生产环境中允许它。@StormShadow:实际上有一种方法,通过扩展upload类。下面是代码,我过去使用过它,并且可以工作。顺便说一句,您可能只想检查您文件的特定mime类型并添加该类型。我可以通过非编程方式找到文件的mime类型?子类工作得很好!谢谢!为您做了大量绿色检查!我正在处理的CSV(从网上银行下载)有一个mime类型为
text/plain
,以防其他人无法使用上面的类型。非常有用。我想知道为什么官方CI没有包括这个。谢谢。对我也有用。在/appation/config/mime.php
文件中有一个CSV mime类型列表,但它没有Jos发布的那么广泛。我列表中缺少两个,添加它们后,我的工作正常了!允许的_类型应该是$config['allowed_types']='csv';
,在config/mimes.php中,您应该在csv键中添加text/plain
。这就是我所做的。谢谢。很好的解决方案。
'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'
),