Php Codeigniter上载类MIME问题

Php Codeigniter上载类MIME问题,php,image,codeigniter,upload,Php,Image,Codeigniter,Upload,我正在尝试使用CodeIgniter上载类上载图像。直到几天前,我才注意到上传某些图片会导致问题。目前我正在用一个名为“image.jpg”的图像测试这个问题。根据文件扩展名,图像是JPG图像,该图像应返回mime类型“image/jpeg”。但是,由于某些原因,在上载此图像时,错误返回状态 “不允许您尝试上载的文件类型。” 我的配置相当简单,允许使用几种不同的图像类型,包括JPG $config = array( 'allowed_types' => 'jpg|j

我正在尝试使用CodeIgniter上载类上载图像。直到几天前,我才注意到上传某些图片会导致问题。目前我正在用一个名为“image.jpg”的图像测试这个问题。根据文件扩展名,图像是JPG图像,该图像应返回mime类型“image/jpeg”。但是,由于某些原因,在上载此图像时,错误返回状态

“不允许您尝试上载的文件类型。”

我的配置相当简单,允许使用几种不同的图像类型,包括JPG

    $config = array(
        'allowed_types' => 'jpg|jpeg|gif|png',
        'file_name'     => $full,
        'upload_path'   => $path,
        'max_size'      => 5120
    );
这里真正重要的是当我回显
$this->upload->data()
时,它返回:

    Array
    (
        [file_name] => image.jpg
        [file_type] => image/png
        [file_path] => /var/www/tmp/
        [full_path] => /var/www/tmp/image.jpg
        [raw_name] => image
        [orig_name] => 
        [client_name] => image.jpg
        [file_ext] => .jpg
        [file_size] => 50519
        [is_image] => 1
        [image_width] => 
        [image_height] => 
        [image_type] => 
        [image_size_str] => 
    )
有人知道为什么图像返回文件类型为
image/png
,而图像应该返回
image/jpeg

我已经检查了
config/mimes.php
,但是一切看起来都是正确和有序的。感谢您的帮助。提前谢谢


如果我将允许的类型设置为:
allowed\u types=>“*”
似乎可以,但我不想允许所有文件类型。这是CodeIgniter 2.0之前的问题。我目前运行的版本是2.1.3,因此2.0的修复程序并不相关,因为这在当前版本中被认为是“修复”的。

在对这个问题做了大量研究后,没有找到任何答案,我自己调试了情况;完全是。结果表明返回的MIME类型是错误的,实际上是正确的;我想是吧。原始图像文件创建为PNG,但在其他地方重新创建时不正确。使用PHP:FINFO:function根据签名等检查真正的文件类型,这就是它返回PNG而不是JPG的原因。我假设这有助于防止人们创建假图像文件并将其上载到服务器,因为$u files[filename][file\u type]并不完全准确。例如,这有助于防止他们创建一个包含代码的.php文件,并将该文件重命名为.jpg并上传


希望这一切都有意义,并能帮助那些认为自己有类似问题的人。

我进一步检查了该图像,将其上传到MIME检测网站,以确保它没有损坏,等等。它在检测网站上返回了正确的“image/jpeg”MIME。因此,在CI上载库的某个地方,它没有检测到正确的mime类型。