CodeIgniter无法上传STEP/STP/IGES等格式3D文件如何解决?
CodeIgniter 3D格式文件上传失败排查解决方案
1 补全允许上传的后缀配置
你当前代码里$config['allowed_types']仅配置了step格式,需要把所有需要支持的后缀全部添加:
$config['allowed_types'] = 'gif|jpg|png|pdf|step|stp|iges|igs|sldprt|3dm|sat|x_t';
2 配置MIME类型映射
CodeIgniter上传类会校验文件后缀和MIME类型的对应关系,默认/application/config/mimes.php中没有这些工业3D格式的映射规则,需要手动在该文件中添加以下配置:
'step' => array('application/step', 'application/x-step', 'model/step', 'application/octet-stream'), 'stp' => array('application/step', 'application/x-step', 'model/step', 'application/octet-stream'), 'iges' => array('model/iges', 'application/iges', 'application/x-iges', 'application/octet-stream'), 'igs' => array('model/iges', 'application/iges', 'application/x-iges', 'application/octet-stream'), 'sldprt'=> array('application/sldprt', 'application/x-sldprt', 'application/octet-stream'), '3dm' => array('application/x-3dm', 'model/3dm', 'application/octet-stream'), 'sat' => array('application/sat', 'application/x-sat', 'application/octet-stream'), 'x_t' => array('application/x-t', 'model/x_t', 'application/octet-stream'),
注:添加
application/octet-stream是为了兼容部分客户端/服务器识别不出特殊格式MIME时,默认返回二进制流的场景,避免校验失败。
3 调试校验实际MIME类型
如果配置完以上内容还是报错,可以在上传方法开头添加临时调试代码,输出上传文件的真实MIME类型,确认是否有未收录的MIME值:
var_dump($_FILES['fileUpload']['type']); die;
拿到输出的MIME值后,添加到mimes.php对应后缀的数组中即可。
4 冗余代码优化(可选)
你当前代码中加载上传库时已经传入了配置参数,后续调用$this->upload->initialize($config)属于重复初始化,可直接删除该行,不影响功能。
内容的提问来源于stack exchange,提问作者Karthik Skmr
相关产品推荐
相关产品推荐

