Codeigniter:不允许您尝试上传的文件类型。昨天还好好的

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 类型与允许的类型不匹配时才会发生此错误,但情况似乎并非如此。

服务器是阿帕奇。

有谁知道可能是什么问题吗?谢谢!

cha*_*une 5

我已经遇到过这个问题两次,这里有两个对我有用的解决方案;

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