2012-06-29 1 views
4

Я пытаюсь загрузить изображение из URL-адреса, и если это gif, я собираюсь его преобразовать, и в противном случае я собираюсь просто оставить его как есть. Тем не менее, очень похоже на this question (на самом деле решить ту же проблему), у меня есть URL-адреса, которые не содержат расширений файлов, поэтому мне нужно как-то определить тип файла другим способом.Как проверить тип файла URL в PHP?

Каков наилучший способ для этого? Использование заголовков, вероятно, будет легким, но поскольку я знаю, что URL-адрес должен будет включать перенаправление, прежде чем я могу получить доступ к файлу, я не уверен, что это лучший способ его протестировать?

+0

Возможно, вы можете попробовать расширение fileinfo pcl? http://www.php.net/manual/en/ref.fileinfo.php – Ben

+0

Я думаю, вы хотите ['finfo_file()'] (http://www.php.net/manual/en/function.finfo- file.php). –

+1

Я попытался использовать finfo_file, но он выдает сообщение об ошибке «Failed ident data 0: (null)», когда я использую полный URL-адрес в качестве имени файла. –

ответ

1

Просто отправьте запрос на URL-адрес, следуйте за любыми возвращенными перенаправлениями (ваш HTTP-клиент должен сделать это за вас), затем прочитайте заголовок Content-Type.
Обратите внимание, что заголовку нельзя доверять; вредоносный сервер или прокси-сервер может установить любой заголовок, который он хочет.

+0

Будет ли сервер устанавливать заголовок, хотя если расширение отсутствует? – Ben

+1

Кажется, это работает сейчас, поэтому я думаю, что я пойду с этим. in_array («Content-Type: image/gif», get_headers ($ url)); –

+0

Кроме того, поскольку заголовки приходят с одного веб-сайта, которому я доверяю, я не слишком беспокоюсь о поддельных заголовках. –

 Смежные вопросы

  • Нет связанных вопросов^_^