在php奇怪的行为中检查文件类型上传

时间:2014-03-04 02:10:33

标签: php

这是如何工作的

if($_FILES['SelectedFile']['type'] != 'image/png' or 'image/jpg' or 'image/gif' || 'image/jpeg'){
    outputJSON('Unsupported filetype uploaded.');
}

我的文件是something.PNG并且它没有传递上面的if语句。我将代码更改为'image/PNG',因为它可能是大写问题,但事实并非如此。我想知道为什么。

修改

var_dump($_FILES['SelectedFile']['type'])

array(5) { ["name"]=> string(11) "Capture.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(24) "C:\xampp\tmp\phpE58A.tmp" ["error"]=> int(0) ["size"]=> int(7818) } 

2 个答案:

答案 0 :(得分:0)

试试这个:

$haystack = array("image/png","image/jpg","image/jpeg","image/gif");
if(!in_array(strtolower($_FILES['SelectedFile']['type']), $haystack){
    outputJSON('Unsupported filetype uploaded.');
}

答案 1 :(得分:0)

你的表达不正确,应该是:

$type = $_FILES['SelectedFile']['type'];
if ($type != 'image/png' && $type != 'image/jpg' && $type != 'image/gif' && $type != 'image/jpeg') {
    outputJSON('Unsupported filetype/uploaded');
}

不会像在自然语言中那样在编程语言中分发。