Получите MIME-тип внешнего файла, используя cURL и php
Я использовал mime_content_type()
и информацию о файле, но никогда не добился успеха. Я хочу использовать теперь cURL с PHP и получить заголовки файла, который размещен на другом домене, затем извлечь и определить, является ли тип MP3 или нет. (я думаю, что тип mime MP3 audio/mpeg
)
Вкратце, я знаю это, но я не знаю, как его применять:)
Спасибо
Ответы
Ответ 1
PHP curl_getinfo()
<?php
# the request
$ch = curl_init('http://www.google.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
# get the content type
echo curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
# output
text/html; charset=ISO-8859-1
?>
завиток
curl -I http://www.google.com
Выход
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Fri, 09 Apr 2010 20:35:12 GMT
Expires: Sun, 09 May 2010 20:35:12 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
Ответ 2
Вы можете использовать запрос HEAD через curl. Как:
$ch = curl_init();
$url = 'http://sstatic.net/so/img/logo.png';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$results = explode("\n", trim(curl_exec($ch)));
foreach($results as $line) {
if (strtok($line, ':') == 'Content-Type') {
$parts = explode(":", $line);
echo trim($parts[1]);
}
}
Что возвращает: image/png
Ответ 3
Если вы в порядке с более элегантной версией Zend Framework, вот класс, который использует компонент Zend_Http_Client.
Используйте его так:
$sniffer = new Smartycode_Http_Mime();
$contentType = $sniffer->getMime($url);