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