Appel d'une function php mime type

Slt voila j ai une function qui me permet de verifier les extensions mais je ne sait pas comment appeller cette function ,

le fichier a verifier ‘.$url.’


Pouvez vous m aider ?

Voici le code



if(!function_exists('mime_content_type')) {

    function mime_content_type($filename) {

        $mime_types = array(

            'txt' => 'text/plain',
            'htm' => 'text/html',
            'html' => 'text/html',
            'php' => 'text/html',
            'css' => 'text/css',
            'js' => 'application/javascript',
            'json' => 'application/json',
            'xml' => 'application/xml',
            'swf' => 'application/x-shockwave-flash',
            'flv' => 'video/x-flv',

            // images
            'png' => 'image/png',
            'jpe' => 'image/jpeg',
            'jpeg' => 'image/jpeg',
            'jpg' => 'image/jpeg',
            'gif' => 'image/gif',
            'bmp' => 'image/bmp',
            'ico' => 'image/vnd.microsoft.icon',
            'tiff' => 'image/tiff',
            'tif' => 'image/tiff',
            'svg' => 'image/svg+xml',
            'svgz' => 'image/svg+xml',

            // archives
            'zip' => 'application/zip',
            'rar' => 'application/x-rar-compressed',
            'exe' => 'application/x-msdownload',
            'msi' => 'application/x-msdownload',
            'cab' => 'application/vnd.ms-cab-compressed',

            // audio/video
            'mp3' => 'audio/mpeg',
            'qt' => 'video/quicktime',
            'mov' => 'video/quicktime',

            // adobe
            'pdf' => 'application/pdf',
            'psd' => 'image/vnd.adobe.photoshop',
            'ai' => 'application/postscript',
            'eps' => 'application/postscript',
            'ps' => 'application/postscript',

            // ms office
            'doc' => 'application/msword',
            'rtf' => 'application/rtf',
            'xls' => 'application/vnd.ms-excel',
            'ppt' => 'application/vnd.ms-powerpoint',

            // open office
            'odt' => 'application/vnd.oasis.opendocument.text',
            'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
        );

        $ext = strtolower(array_pop(explode('.',$filename)));
        if (array_key_exists($ext, $mime_types)) {
            return $mime_types[$ext];
        }
        elseif (function_exists('finfo_open')) {
            $finfo = finfo_open(FILEINFO_MIME);
            $mimetype = finfo_file($finfo, $filename);
            finfo_close($finfo);
            return $mimetype;
        }
        else {
            return 'application/octet-stream';
        }
    }
}

Edité le 16/03/2010 à 19:39

Personne ne peut m aider ?

Je pense que 1) tu te fais chier pour rien car cette fonction existe déjà en php 5 (et même 4.3) 2) il faut que tu passes à la fonction le fichier que tu veux analyser.

-> fr2.php.net…

<?php
echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>

-> fr2.php.net…

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // Retourne le type mime à la extension mimetype
foreach (glob("*") as $filename) {
    echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>

Oui merci pour ta réponse mais ca je savait deja le faire .
Moi en faite j aurais besoin de ce code ci-dessous justement pour assigner a chaque format un texte ou un player swf pour les extensions flash ou mp3 etc…

donc voila si quelqu un peut me dire comment verfier ma valeur ‘.$url.’ avec ce code , je suis ouvert a toute proposition … ( merci pour vos réponses )

if(!function_exists('mime_content_type')) {

 function mime_content_type($filename) {

 $mime_types = array(

 'txt' => 'text/plain',
 'htm' => 'text/html',
 'html' => 'text/html',
 'php' => 'text/html',
 'css' => 'text/css',
 'js' => 'application/javascript',
 'json' => 'application/json',
 'xml' => 'application/xml',
 'swf' => 'application/x-shockwave-flash',
 'flv' => 'video/x-flv',

 // images
 'png' => 'image/png',
 'jpe' => 'image/jpeg',
 'jpeg' => 'image/jpeg',
 'jpg' => 'image/jpeg',
 'gif' => 'image/gif',
 'bmp' => 'image/bmp',
 'ico' => 'image/vnd.microsoft.icon',
 'tiff' => 'image/tiff',
 'tif' => 'image/tiff',
 'svg' => 'image/svg+xml',
 'svgz' => 'image/svg+xml',

 // archives
 'zip' => 'application/zip',
 'rar' => 'application/x-rar-compressed',
 'exe' => 'application/x-msdownload',
 'msi' => 'application/x-msdownload',
 'cab' => 'application/vnd.ms-cab-compressed',

 // audio/video
 'mp3' => 'audio/mpeg',
 'qt' => 'video/quicktime',
 'mov' => 'video/quicktime',

 // adobe
 'pdf' => 'application/pdf',
 'psd' => 'image/vnd.adobe.photoshop',
 'ai' => 'application/postscript',
 'eps' => 'application/postscript',
 'ps' => 'application/postscript',

 // ms office
 'doc' => 'application/msword',
 'rtf' => 'application/rtf',
 'xls' => 'application/vnd.ms-excel',
 'ppt' => 'application/vnd.ms-powerpoint',

 // open office
 'odt' => 'application/vnd.oasis.opendocument.text',
 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
 );

 $ext = strtolower(array_pop(explode('.',$filename)));
 if (array_key_exists($ext, $mime_types)) {
 return $mime_types[$ext];
 }
 elseif (function_exists('finfo_open')) {
 $finfo = finfo_open(FILEINFO_MIME);
 $mimetype = finfo_file($finfo, $filename);
 finfo_close($finfo);
 return $mimetype;
 }
 else {
 return 'application/octet-stream';
 }
 }
}

Edité le 19/03/2010 à 20:10

Si tu veux faire ce que tu veux faire, alors tu dois le faire en te basant sur le mimetype retourné par la fonction (et non la tienne, qui réinvente la roue, et qui est de ce fait incomplète, et telle que tu as fais ton code, elle ne sera jamais déclarée à cause du if (!function_exists(…))).

Ensuite, tu l’auras remarqué, ton mimetype est basé sur une séquence :

mimeType: genericType ‘/’ specificType

Ce qui signifie que si tu fais un explode(’/’, $mimeType), le premier élément retourné sera le type générique : pour le cas “text”, pas compliqué, pour le cas “image”, il faut que tu regardes le type (jpg, gif, png sont supportés, bmp à la rigueur, le reste passe par un player spécialisé), et ainsi de suite.

Derrière, ce n’est pas bien compliqué, suffit de construire un tableau de ce genre :

$mimeTypes = array(
	'text' => array(
		'$global' => array(
			'description' => 'Fichier texte générique',
			'usePlayer' => false,
		),
		'html' => array(
			'description' => 'HTML',
			'usePlayer' => false,
		),
	),
	'audio' => array(
		'mpeg' => array(
			'description' => 'MPEG (Audio)',
			'usePlayer' => true,
		),
	),
);

$mime = explode('/', $mimeType);
$rootMime = $mimeTypes[$mime[0]];
$mime = isset($mime[1]) && isset($rootMime[$mime[1]]) ? $rootMime[$mime[1]]:(isset($rootMime['$global']) ?$rootMime['$global']:null));

if ($mime === null) {
	// erreur
} else {
	echo $mime['description'], "\n";
	echo $mime['usePlayer'] ? "player flash requis":"";
}

N’oublie pas également qu’avec HTML5 il y a désormais la balise video (et audio je crois). Mais qu’avant, tu peux aussi utiliser la balise object avec le mime qui va bien.

Merci pour ta reponse Sans-Nom mais comment je fais pour appeler ton code

je fais ‘.$mimeTypes[$enclosure].’ ? j ai essayer et j ai rien

Enclosure = le fichier a verifier
Edité le 24/03/2010 à 07:41

J’ai supposé que tu savais appeler la fonction décrites plus haut (la fameuse get_mimetype ou peu importe son nom…)