Как выяснить тип изображения перед его загрузкой?

0

Я знаю, что могу сохранить изображение, используя следующий метод:

$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"? Как я могу определить тип целевого изображения перед его сохранением?

Теги:

1 ответ

1
Лучший ответ

Лучше всего просто загрузить его и позже переименовать. Таким образом, вам нужно сделать только один запрос.

Другая вещь, которую вы можете сделать, это сделать запрос 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);
  • 0
    Это прекрасно, но что, если сервер не поддерживает запросы HEAD?
  • 0
    @Meysam В этом случае вам придется выполнить обычный запрос GET и отменить загрузку. В этот момент вы можете просто проверить заголовки ответа и получить тип. Что вы должны сделать, это сначала загрузить данные, а затем переименовать этот файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню