Mar*_*sar 8 php upload codeigniter mime-types
好吧,我相信这本身并不是一个Codeigniter问题,因为它更像是一个mime类型.
我正在尝试上传文件,xls(或xlsx)文件和mime-type浏览器,php报告是application/octet-stream而不是application/excel,application/vnd.ms-excel或application/msexcel对于xls文件.当然,codeigniter上传插件会在尝试将文件扩展名与mime-type匹配时报告错误(文件类型无效).
奇怪的(est)可能是相同的代码工作了几个月,现在停止使用最新的Chrome(16.0.912.77),Firefox(10.0)和IE9.
有没有人有相同(或类似)的问题,并谨慎分享解决方案?
非常感谢你.PS:我不会提供代码,因为它不是真正的代码问题,但如果有必要,我会上传一些代码片段.
编辑
这可能是相关的:该错误不相同的浏览器上发生了类似的配置,但与MS Office,而不是自由报办公室(我的电脑).它也不会发生在基于GNU/Linux的+ Libre Office系统上.那么,是不是Windows在开源套件上很难玩,或者自由办公室改变了mime类型只是为了它呢?
我也收到了这个错误.
CI报告文件类型为'application/zip',因为xlsx格式是压缩格式(将其重命名为zip并且您可以打开内容),这是有意义的.
我已将以下行添加/替换为mime类型文件(application/config/mimes.php):
'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/zip'),
Run Code Online (Sandbox Code Playgroud)
这是有效的(至少对于这个浏览器!)
请仔细阅读以下描述和提示,轻松获得答案!
描述:
实际上,正如许多人建议的那样,在文件(application/config/mimes.php)中添加/替换以下行:
'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'),
Run Code Online (Sandbox Code Playgroud)
'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel'),
Run Code Online (Sandbox Code Playgroud)
因此,将上面的“application/vnd.ms-excel”添加到xlsx文件类型的数组中,让我上传.xlsx文件!
暗示:
每当您在 CodeIgniter 平台上上传文件时出现以下错误:
您尝试上传的文件类型不被允许。
在控制器的上传方法中执行以下操作,
var_dump($this->upload->data());
Run Code Online (Sandbox Code Playgroud)
它会给你一个巨大的数组,你可以从这个链接中得到一个想法。(请参阅该页面的末尾)。在该数组中,您可以获取您尝试上传但不让您上传的文件的真实 mime_type 。
回答:
就我而言,我的文件扩展名是.xlsx,mime 类型是application/vnd.ms-excel,它没有添加到
'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'),
Run Code Online (Sandbox Code Playgroud)
所以我手动添加了它,之后它工作得非常好!
再次上传 CSV 时发生了同样的事情,当我检查文件扩展名是.csv但 mime 类型是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');
Run Code Online (Sandbox Code Playgroud)
并保存如下,
'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'),
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力!:D 尝试一下,如果您在上述步骤中发现新的东西,请在这里评论!因此,我花了一些时间发布它,希望这对所有 CodeIgniter 社区都有帮助!
| 归档时间: |
|
| 查看次数: |
29864 次 |
| 最近记录: |