通过代码点火器上传获取“不允许文件类型”


Getting "filetype not allowed" with Codeigniter upload

首先,关于这个话题已经有很多(已解决的)问题。我尝试了所有可能的解决方案。但无济于事。

  • CI 版本2.1.42.2.1中都出现问题。
  • 我还尝试使用不同的文件类型,例如 pnggiftxt
  • 我没有做任何mime-type更改,例如,通过在.htaccess文件中使用 AddType
  • 我使用了一个简单的 html 表单和一个用于调试的邮递员
  • 我已经尝试过PHP版本5.55.6(启用文件信息模块)
  • mimes.php文件中确实存在 MIME 类型
  • tmp文件夹是可写的

我别无选择...
有谁知道问题可能是什么?

提前感谢!


配置

$this->uploadconfig =  array(
    'upload_path'     => "./tmp/",
    'allowed_types'   => "png|gif|txt",
    'overwrite'       => TRUE,
    'max_size'        => "25000KB",
    'max_height'      => "5000",
    'max_width'       => "5000"
);
$this->load->library('upload', $this->uploadconfig);

错误

The filetype you are attempting to upload is not allowed.

输出

[file_name] => test.png
[file_type] => image/png
[file_path] => /CORRECT_SERVER_PATH/tmp/
[full_path] => /CORRECT_SERVER_PATH/tmp/test.png
[raw_name] => test
[orig_name] => 
[client_name] => test.png
[file_ext] => .png
[file_size] => 851
[is_image] => 1
[image_width] => 
[image_height] => 
[image_type] => 
[image_size_str] => 

我找到了解决方案:

Codeigniter 2.1.4有一个错误,如此处所述。
所以我已经将 CI 更新到版本 2.2.1 ,在这里和这里发布更新说明。

第二次检查mimes.php文件后,我注意到我的原始文件与新版本中包含的文件之间存在差异。我用新的替换了旧的,问题解决了。

升级说明中未记录的是两个文件之间存在差异的事实。较旧的(CI 2.1.4)文件返回一个数组。较新的(CI 2.2.1)不返回数组,而是设置一个变量名为$mimes的数组。