Ethan's Blog

记录和思考

CodeIgniter 将所有上传文件识别为 application/octet-stream 的问题

最近使用 CodeIgniter 的文件上传类时,遇到了一个问题,不管上传什么类型的文件,都会提示 “The filetype you are attempting to upload is not allowed.” 。实际上,我已经在文件上传类的配置中,将所需要上传的文件类型写到了 allowed_types 的配置项中。

通过开启 CodeIgniter 的调试信息 ( $this->output->enable_profiler(TRUE); ),发现不管上传的是什么类型的文件,CodeIgniter 都会将文件识别为 application/octet-stream 的类型。搜集了一些资料,原来原因是 PHP 的配置问题,也就是说 PHP 没有能力识别上传的文件的类型,自然 CodeIgniter 也就无法识别文件类型了,最后把解决办法分享如下:

在 php.ini 中开启 fileinfo 的拓展来获取正确的文件类型:

// windows
extension = php_fileinfo.dll

// linux
extension = fileinfo.so

再次尝试即可发现问题解决。

相关文章: