2011-09-27 20 views
33

Tengo un script de carga que necesito para verificar la extensión del archivo, luego ejecuto funciones separadas basadas en esa extensión de archivo. ¿Alguien sabe qué código debería usar?PHP check file extension

if (FILE EXTENSION == ???) 
{ 
FUNCTION1 
} 
else if 
{ 
FUNCTION2 
} 
+0

posible duplicado de [Cómo extraer una extensión de archivo en PHP?] (http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension-in-php) –

Respuesta

78

pathinfo es lo que estás buscando

PHP.net

$file_parts = pathinfo($filename); 

switch($file_parts['extension']) 
{ 
    case "jpg": 
    break; 

    case "exe": 
    break; 

    case "": // Handle file extension for files ending in '.' 
    case NULL: // Handle no file extension 
    break; 
} 
+1

¿Cuál es el caso para ninguna extensión? caso NULL? caso ""? – swl1020

+2

Actualizado. cadena vacía '" "' es para archivos y luego termina con '.'. 'NULL' es para ninguna extensión de archivo. Podrías sacar la declaración del caso, pero para el ejemplo simplemente los agrupé. – Brombomb

14
$info = pathinfo($pathtofile); 
if ($info["extension"] == "jpg") { .... } 
+0

He usado este código en una sección de mi sitio web. Sin embargo, al ejecutarlo junto con 'echo" $ info "' siempre devuelve el valor Array. ¿Por qué es esto? –

+0

@ user2910074 Esta pregunta es VIEJA, y haré que vea su código para proporcionarle ayuda. Sugiero que publique una pregunta aquí en SO –

-1
$original_str="this . is . to . find"; 
    echo "<br/> Position: ". $pos=strrpos($original_str, "."); 
    $len=strlen($original_str); 
    if($pos >= 0) 
    { 
    echo "<br/> Extension: ". substr($original_str,$pos+1,$len-$pos) ; 
    } 
+0

@jurchiks 'this. es . a . find' es absolutamente un nombre de archivo válido en la mayoría de los sistemas operativos. – meagar

+0

Gracias @meagar. Gracias por tu valioso comentario. – Jasmeen

2
$file_parts = pathinfo($filename); 

$file_parts['extension']; 
$cool_extensions = Array('jpg','png'); 

if (in_array($file_parts['extension'], $cool_extensions)){ 
    FUNCTION1 
} else { 
    FUNCTION2 
} 
0

para PHP 5.3+ se puede utilizar la clase SplFileInfo()

$spl = new SplFileInfo($filename); 
print_r($spl->getExtension()); //gives extension 

Asimismo, puesto que se está comprobando la extensión de carga de archivos, recomiendo encarecidamente utilizar el tipo MIME en lugar ..

para PHP 5.3+ utilizar la clase finfo

$finfo = new finfo(FILEINFO_MIME); 
print_r($finfo->buffer(file_get_contents($file name));