Как получить расширение изображения с помощью file_get_contents php?

Я пытаюсь скопировать на свой сервер изображение с другого сайта, и я планирую использовать

<? file_put_contents($toPath, file_get_contents($fromPath)); ?> 

Хорошо, но для построения $toPath мне нужно расширение файла. Я знаю, как это сделать, если $fromPath – это нормальный путь с именем файла в конце, но если я использую такой путь, как facebook, используйте http://graph.facebook.com/user_id/picture?type=large как я могу получить расширение?

Спасибо вам всем.

 $size = getimagesize($fromPath); $extension = image_type_to_extension($size[2]); 

Получите размер изображения, возьмите файл типа.

В PHP 5.3 вы можете использовать finfo_file() , см. PHP ref

 file_put_contents($toPath, file_get_contents($fromPath)); $handle = fopen($toPath,'r'); print finfo_file($handle); 

это работает и для не изображений.

Это намного быстрее, чем ответ @ Kolink:

 $extension= end(explode("/", image_type_to_mime_type(exif_imagetype($photoURL)))); 

Не нужно угадывать или использовать типы mime или магические байты. График facebook api всегда возвращает jpegs (см. FB Profile Pic всегда возвращался как «.jpg» для обсуждения).

Но в целом, здесь приведена ссылка на определение типа интеллектуального файла: http://designshack.net/articles/php-articles/smart-file-type-detection-using-php/

Если у вас есть только поток байтов, finfo_file () – ваш друг.

Если у вас есть тип mime, просто используйте это.