Я знаю, что могу сохранить изображение, используя следующий метод:
$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);
Других решений пока нет …