2014-09-02 2 views
0

У меня проблема с проверкой, что изображение wheather - png, gif, jpg, jpeg. Я пробовал использовать getimagesize (путь к файлу), но для этого нужен полный путь к изображению, так как у меня только только имя изображения image1.jpg. Я хочу проверить тип файла png, gif, jpg, jpeg перед его загрузкой. Я хочу, чтобы код проверял тип перед загрузкой в ​​каталог. getimagesize (путь к файлу) дает мне воровство, что Не удалось открыть поток becaus efile не находится в каталоге, он еще не поднят. Я не нашел ничего, что сработает для меня. Может кто-нибудь здесь помочь мне из этой проблемы. Вот мой код:Проверьте тип изображения в php

list(image_width, image_height, image_type) = getimagesize("image1.jpg"); 
switch ($source_image_type) 
{ 
    case IMAGETYPE_GIF: 
     //some code here 
    break; 
    case IMAGETYPE_JPEG: 
     //some code here 
    break; 
    case IMAGETYPE_PNG: 
     //some code here 
    break; 
} 

Этот код дает мне предупреждение о том, что не удалось открыть поток.

+0

Перед загрузкой? Таким образом, вы хотите проверить, имеет ли изображение правильное расширение перед загрузкой, вам нужно будет использовать элемент html5, который фильтрует элемент файла. Если вы имеете в виду, прежде чем перемещать загруженный файл в папку, отличную от temp, вы можете использовать ['exif_imagetype'] (http://php.net/manual/en/function.exif-imagetype.php). –

+0

Это дает мне предупреждение, что «Не удалось открыть поток». Поскольку файл не загружен в каталог. Я хочу, чтобы код проверял тип перед его загрузкой. –

+0

Если перед загрузкой, то у вас есть только имя файла для работы. Лучше всего взорвать и проверить последнее расширение - это именно то, что делает 웃 웃웃 웃웃. –

ответ

0

Используйте следующую функцию:

string image_type_to_mime_type (int $imagetype); 

Пожалуйста, обратитесь this ссылку.

+0

Это дает мне предупреждение, что« Не удалось открыть поток », я хочу что-нибудь, что проверит изображение перед загрузкой изображения. –

+0

Можете ли вы поделиться своим кодом здесь, чтобы мы могли сделать его правильным в соответствии с вашим кодом? –

+0

Я отредактировал мое сообщение и приложил свой пример кода, пожалуйста, проверьте. –

0

в PHP инструкции есть сборки в функции, чтобы получить тип изображения, вы можете использовать exif_imagetype() и делать все, что вы хотели сделать,

int exif_imagetype (string $filename) 

if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { 
    echo 'The picture is not a gif'; 
} 

пользователей Windows: Если вы получаете фатальную ошибку «Фатальная ошибка : Вызов неопределенной функции exif_imagetype() ", и вы включили php_exif.dll, убедитесь, что вы включили php_mbstring.dll. Вы должны поставить MBstring перед тем в EXIF ​​php.ini, т.е .:

extension=php_mbstring.dll 
extension=php_exif.dll 

Вы можете проверить, является ли это работает по телефону phpinfo() и поиска EXIF. Если функция exif_imagetype() не доступен, вы можете попробовать следующий обходной путь:

if (! function_exists('exif_imagetype')) { 
    function exif_imagetype ($filename) { 
     if ((list($width, $height, $type, $attr) = getimagesize($filename)) !== false) { 
      return $type; 
     } 
    return false; 
    } 
} 

если вы хотите проверить, прежде чем загружать изображения, вы можете использовать

if($_FILES['file_upload']['type'] != 'image/png'){ 
    die('Unsupported filetype uploaded.'); 
} 
+0

Это дает мне предупреждение, что «Не удалось открыть поток». Поскольку файл не загружен в каталог. Мне нужно что-то, что будет проверять тип изображения перед его загрузкой. –

+0

отредактировал мой ответ, посмотрите на дно, я думаю, это можно сделать, используя обычную функцию из загрузки изображения –

Смежные вопросы