Я знаю, что могу сохранить изображение, используя следующий метод:
$input = 'http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com';
$output = 'google.com.jpg'; // << How to save the image with proper extension?
file_put_contents($output, file_get_contents($input));
Но что, если я не знаю формат загруженного изображения? Что, если это "png"? Как я могу определить тип целевого изображения перед его сохранением?
Лучше всего просто загрузить его и позже переименовать. Таким образом, вам нужно сделать только один запрос.
Другая вещь, которую вы можете сделать, это сделать запрос HTTP HEAD. Это получает все заголовки ответов, включая заголовок Content-Type
, поэтому вы можете решить, хотите ли вы эти данные или нет, прежде чем загружать файл. Однако не все серверы поддерживают запросы HEAD.
В любом случае, cURL - это самый простой способ сделать это:
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/something');
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$headers = curl_exec($ch);