【问题标题】:Codeigniter : The filetype you are attempting to upload is not allowed. Yesterday it was fineCodeigniter :不允许您尝试上传的文件类型。昨天还好好的
【发布时间】:2014-03-19 02:31:22
【问题描述】:

我的 codeigniter 应用今天突然坏了。我没有处理上传代码,当我今天尝试上传图像时,我突然收到“您尝试上传的文件类型不允许”。昨天一切都很好。

我的配置数组是:

$config = array(
     'file_name' => $data['slug'] .'-'. $key,
     'upload_path' => './images',
     'allowed_types' => 'gif|jpg|jpeg|png'
    );

我也尝试将允许的类型设置为:'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] => 
)

我了解以前版本的 CI 中存在一些错误,但我昨天没有这些问题。我也明白只有当 MIME 类型与允许的类型不匹配时才会出现此错误,但似乎并非如此。

服务器是 Apache。

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

【问题讨论】:

  • 检查文件格式,或者使用图像编辑器应用打开它并重新保存并再次尝试,还要确保扩展ID jpg不是JPG,有时会有所不同
  • 您是否尝试过仅调试发出错误的 CI 代码,看看它认为发生了什么?
  • 你能看看服务器是否已经达到上传文件的限制吗?

标签: php codeigniter mime-types


【解决方案1】:

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

1 - 系统报告的 mime 类型可能不同,并且可能不在为特定文件扩展名设置的 mime 类型数组中。 .csv 文件是我为此找到的最糟糕的文件。通过在上传后转储上传数据来了解系统报告的 MIME 类型

die($this->upload->data());

“file_type”索引将包含一个字符串 - 将其添加到数组值中,索引与 application/config/mimes.php 中所需的文件扩展名匹配

2 - 我最近一次遇到这种情况是在我将核心 Codeiginter 版本从 2.x 升级到 3.x 时。我更新了系统目录的内容,但没有更新应用程序/配置。我没有发现 application/config/mimes.php 文件略有不同的事实——新版本返回一个数组,而旧版本将它作为 var 包含在内。修复方法是复制新版本的 mimes.php

【讨论】:

    【解决方案2】:

    您是否正确初始化了$config

    $this->load->library('upload', $config);
    $this->upload->initialize($config); // Make sure it has been initialized
    

    【讨论】:

      【解决方案3】:

      我今天也遇到了同样的问题。

      我所做的只是将CodeIgniter-3.0.6\application\config\mimes.php的全部内容复制到我的application\config\mimes.php

      【讨论】:

        【解决方案4】:

        不确定这是否有帮助,我只在本地主机上的测试服务器上运行的 Windows 开发机器上遇到了这个问题,在我的实时网络托管上它可以很好地检测 mime 类型。

        我快速浏览了上传库本身,发现您只需在允许的类型中添加一个 * 即可允许任何内容。

        不要认为这在手册中的任何地方都有记录,但我为我解决了问题,因为我只是想让我的脚本在本地启动并运行以做一些工作。

        【讨论】:

        • 尝试检查 php ini,取消注释扩展 php_fileinfo.dll,这在我的 windows 开发机器上工作
        【解决方案5】:

        从上传路径初始化$configremove base_url()。它会正常工作。

        $this->upload->initialize($config);
        

        【讨论】:

          猜你喜欢
          • 2017-08-18
          • 2012-04-06
          • 2012-04-22
          • 1970-01-01
          • 2011-11-21
          • 2011-06-08
          • 2014-12-30
          • 2023-04-07
          • 2016-11-14
          相关资源
          最近更新 更多