Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get mime type of external file using cURL and php

Tags:

I've used mime_content_type() and File info but i never successed. i want to use now cURL with PHP and get the headers of the file which is hosted on another domain then extract & determine if the type is MP3 or not. ( i think the mime type of MP3 is audio/mpeg )

Briefly, i know that but i don't know how to apply it :)

Thanks

like image 936
CodeOverload Avatar asked Apr 09 '10 20:04

CodeOverload


People also ask

How can I get MIME type from uploaded file in PHP?

The mime_content_type() function is an inbuilt function in PHP which is used to get the MIME content-type of a file. Parameters: This function accepts single parameter $file which specifies the path of the file which MIME details to be find. Return Value: This function returns the MIME content type or False on failure.

How get cURL URL in PHP?

Use curl_getinfo($ch) , and the first element ( url ) would indicate the effective URL.

What is cURL mime?

MIME (Multipurpose Internet Mail Extensions) type is a standard way of describing a data type in the body of an HTTP message or email. The MIME type is passed in the Content-Type header.


2 Answers

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

curl -I http://www.google.com

output

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 
like image 104
maček Avatar answered Sep 19 '22 14:09

maček


You can use a HEAD request via curl. Like:

$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 (strtolower(strtok($line, ':')) == 'content-type') {         $parts = explode(":", $line);         echo trim($parts[1]);     } } 

Which returns: image/png

like image 41
Mark Avatar answered Sep 17 '22 14:09

Mark