2011-03-25 7 views

Respuesta

86
$name = $_FILES["file"]["name"]; 
$ext = end((explode(".", $name))); # extra() to prevent notice 

echo $ext; 
+0

Eso era simple. Gracias :) – yanike

+0

Asegúrese de recordar que una extensión de nombre de archivo es solo una pista sobre el contenido real. Puede ser de contenido totalmente diferente. – user1610743

+2

@ user1610743 es una regla general no confiar en el contenido de ningún usuario. Obviamente, uno podría verificar los encabezados de los archivos y asegurarse de que coincida con la extensión. Ejemplo serían imágenes (JPEG, PNG, etc.). –

1

Sí, puedes usar $_FILES['file']['name'] para obtener el nombre original del archivo subido. Solo tenga en cuenta que la extensión puede no representar siempre el contenido real del archivo.

+0

Entiendo que podemos encontrar con el 'nombre', pero me preguntaba si podemos encontrar usando solo tmp_name. – Peter

+1

@Peter, 'tmp_name' es un nombre de archivo aleatorio generado por PHP. Solo puede hacer esto mirando el nombre original real. – Charles

0

Sí, suponiendo que se nombre con precisión. Conservará su nombre y extensión originales.

67

Usted podría utilizar pathinfo():

$path_parts = pathinfo($_FILES["file"]["name"]); 
$extension = $path_parts['extension']; 
+0

acaba de ahorrar mi tiempo, gracias – Elyor

+8

Versión corta - pathinfo ($ nombre de archivo, PATHINFO_EXTENSION); – fsasvari

+0

realmente útil respuesta! votando por ti. Gracias. – Miron