Я пытаюсь скопировать на свой сервер изображение с другого сайта, и я планирую использовать
<? 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, просто используйте это.