PHP上传图像文件类型问题

时间:2013-12-19 16:37:19

标签: php

我是新的php中的上传功能,我有这个:

if( $_FILES[$fileElementName]['type'] !== "image/gif"

                || $_FILES[$fileElementName]['type'] !== "image/jpeg"
                || $_FILES[$fileElementName]['type'] !== "image/jpg"
                || $_FILES[$fileElementName]['type'] !== "image/pjpeg"
                || $_FILES[$fileElementName]['type'] !== "image/x-png"
                || $_FILES[$fileElementName]['type'] !== "image/png"
                || $_FILES[$fileElementName]['type'] == "application/x-rar-compressed"
           ){

                 $error = 'wrong file only :GIF,jpg,png .';
 //    die($_FILES[$fileElementName]['type']);  // also i did die here to check
    }

但即使我上传了jpg,它也无法正常工作。 我确实死了/ var_damp并且它的类型适用于E.G: 我上传了sds.jpg,我让它给出了正确的答案:

image/jpeg

但它会一直说错误的文件为什么?

2 个答案:

答案 0 :(得分:2)

Look here the source

尝试更多更短更好的变体:

 $allowedTypes = array('image/jpeg','image/jpg' ,'image/pjpeg' ,'image/pjpeg', 'image/png', 'application/x-rar-compressed');

$fileType = $_FILES[$fileElementName]['type'];

if(!in_array($fileType, $allowedTypes)) {
    // do whatever you need to say that
    // it is an invalid type eg:
    die('You may only upload jpeg images');
}

答案 1 :(得分:0)

你应该使用条件&&(和)而不是||(或者)

为了避免一个难以维护的大规模声明,我会使用一个数组。

$allowedtypes = array(
  'image/jpg',
  'image/jpeg',
  //..etc
);

if (! in_array($_FILES[$fileElementName]['type'], $allowedTypes)) {
 // not allowed
} else {
 // allowed
}