Jur*_*els 1 php codeigniter mime-types
我的 codeigniter 应用程序今天突然坏了。我没有处理上传代码,今天当我尝试上传图像时,我突然收到“不允许您尝试上传的文件类型”。昨天一切都很好。
我的配置数组是:
$config = array(
'file_name' => $data['slug'] .'-'. $key,
'upload_path' => './images',
'allowed_types' => 'gif|jpg|jpeg|png'
);
Run Code Online (Sandbox Code Playgroud)
我还尝试将允许的类型设置为: 'image/gif|image/jpg|image/jpeg|image/png' 但没有运气。
转储 $this->upload->data() :
Array
(
[file_name] => ring.jpg
[file_type] => image/jpeg
[file_path] => /home/user/www.domain.ca/images/
[full_path] => /home/user/www.domain.ca/images/ring.jpg
[raw_name] => ring
[orig_name] =>
[client_name] => ring.jpg
[file_ext] => .jpg
[file_size] => 49158
[is_image] => 1
[image_width] =>
[image_height] =>
[image_type] =>
[image_size_str] =>
)
Run Code Online (Sandbox Code Playgroud)
我知道以前版本的 CI 存在一些错误,但我昨天没有遇到这些问题。我还了解到,只有当 MIME 类型与允许的类型不匹配时才会发生此错误,但情况似乎并非如此。
服务器是阿帕奇。
有谁知道可能是什么问题吗?谢谢!
我已经遇到过这个问题两次,这里有两个对我有用的解决方案;
1 - 系统报告的 mime 类型可能有所不同,并且可能不在为特定文件扩展名设置的 mime 类型数组中。.csv 文件是我发现的最糟糕的文件。通过在上传后转储上传数据来找出系统报告的 MIME 类型
die($this->upload->data());
Run Code Online (Sandbox Code Playgroud)
“file_type”索引将包含一个字符串 - 将其添加到数组值中,其索引与 application/config/mimes.php 中所需的文件扩展名相匹配
2 - 最近一次出现这种情况是当我将核心 Codeiginter 版本从 2.x 升级到 3.x 时。我更新了系统目录的内容,但没有更新 application/config。我没有发现 application/config/mimes.php 文件略有不同 - 新版本返回一个数组,而旧版本将其作为 var 包含。修复方法是复制较新版本的 mimes.php