Разрешить загрузку файлов изображений на мой сервер только с помощью PHP

Я пытаюсь создать сценарий, в котором я разрешаю загружать только файлы .png, .jpeg и .gif на основе типов MIME. Что у меня есть до сих пор это:

if(file_exists($root."/upload/gallery/".$_FILES["image"]["name"]))
{
    $filename = explode(".",$_FILES['image']['name']);
    $randomnumber = rand(0, 10000);
    $imageName = $filename[0].$randomnumber.".".$filename[1];
}
else
{
    $imageName = $_FILES['image']['name'];
}

$image = mysql_real_escape_string(htmlspecialchars("/upload/gallery/".$imageName));

$allowed = array('image/jpeg', 'image/png', 'image/gif');

if(in_array($_FILES['image']['name'], $allowed)){
    echo "Allowed!";
    die;
}
else {
    echo "Not allowed!";
    die;
}

Я был почти уверен, что это должно сработать. Но он всегда выдает Not allowed!, когда я выбираю файлы с правильным типом MIME, что я здесь делаю неправильно? Код включает проверку файлов в моей папке загрузки, которые уже имеют такое же имя, и, если это так, добавляет случайное число к имени файла.


person Frank Kluytmans    schedule 16.09.2014    source источник


Ответы (1)


Вы сравниваете разрешенный список с файлом name, а не с типом.

Тип файла будет содержаться в массиве применимых типов в:

$_FILES['image']['type']
person Flosculus    schedule 16.09.2014