Basado en los códigos de error es mucho más fácil determinar si el archivo se subió correctamente o no:
 
0 = OK, se subió un archivo y llegó correctamente
1, 2, 3 = No recuerdo
4 = El usuario no seleccionó archivo
5+ = No recuerdo, consulta la lista en: 
http://php.net/manual/es/features.fi...oad.errors.php 
Luego, el contenido de type no es confiable, veamos: 
 Cita:  
					Iniciado por Manual de PHP   $_FILES['userfile']['type']
 
El tipo mime del archivo, 
si el navegador proporciona esta información. Un ejemplo podría ser "image/gif". 
Este tipo mime, sin embargo no se verifica en el lado de PHP y por lo tanto no se garantiza su valor. 
Más info en: 
http://php.net/manual/es/features.fi...ost-method.php     Entonces, una forma fácil es obtener la extensión y compararla con las permitidas. Lo ideal es que uses 
Fileinfo.