Foros del Web » Programando para Internet » PHP »

Limitando upload por tipo de archivo

Estas en el tema de Limitando upload por tipo de archivo en el foro de PHP en Foros del Web. Hola. he desarrollado un aplicación para subir gráficos que me funciona correctamente lo que no se es como "limitar" el tipo de archivo a subir, ...
  #1 (permalink)  
Antiguo 27/12/2004, 12:44
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 20 años, 5 meses
Puntos: 0
Limitando upload por tipo de archivo

Hola. he desarrollado un aplicación para subir gráficos que me funciona correctamente lo que no se es como "limitar" el tipo de archivo a subir, pues ahora me sube cualquier tipo de archivo y yo sólo quiero que me suba los típicos (jpeg, gif, png).

Saludos
  #2 (permalink)  
Antiguo 27/12/2004, 13:13
 
Fecha de Ingreso: febrero-2003
Mensajes: 12
Antigüedad: 21 años, 1 mes
Puntos: 0
Código PHP:
$nombre  $_FILES["archivo"]["name"];

if (!
ereg(".png",$nombre)) 
    {
        print 
"La extensión del archivo no es válida";
    } 
esto es para sólo una extensión puedes guardar las extensiones válidas en un array y hacer la validacion recorriendolo

Salu2
  #3 (permalink)  
Antiguo 27/12/2004, 13:16
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 20 años, 5 meses
Puntos: 0
¡Gracias mistyko!
  #4 (permalink)  
Antiguo 27/12/2004, 13:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
OJO! con sólo validar por nombre de la extensión .. por ahí te podrían meter "archivos" que no sean estrictamente un ".png" por ejemplo ...

Deberías revisar el formato MIME del archivo que sube .. ese dato lo tienes en:
$_FILES["archivo"]["type"]

Y ahí obtendrás cosas como:
image/png
image/jpg
application/word
application/zip

etc .. etc (usa google: MIME type .. veras muchos más)

Un saludo,

Última edición por Cluster; 27/12/2004 a las 14:02
  #5 (permalink)  
Antiguo 27/12/2004, 13:54
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
creo que como dice Cluster, tienes que ver el tipo Mime y no solo lo que va despues del .
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 27/12/2004, 14:07
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 20 años, 5 meses
Puntos: 0
Ahora me funciona mirando un tipo sólo de archivo pero no con varios a la vez, os pego la línea en concreto (seguro que es un error de principiante), a ver que os parece:

Código PHP:
if (($_FILES['grafico']['type']) !== (("image/pjpeg")||("image/gif")||("image/png"))) { 
// etc...


Última edición por neofito; 27/12/2004 a las 14:24
  #7 (permalink)  
Antiguo 27/12/2004, 14:49
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
pues no, tienes que hacer algo asi:

if ($_FILES['grafico']['type'] != "image/jpeg" || $_FILES['grafico']['type'] != "image/gif" || $_FILES['grafico']['type'] != "image/png") {
// etc...
}
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 28/12/2004, 11:23
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 20 años, 5 meses
Puntos: 0
Gracias FuLaNo_ , pensé que se podía hacer todo de una tacada, gracias por la ayuda, ahora me funciona correctamente y entiendo porque no me chutaba.

Saludillos.
  #9 (permalink)  
Antiguo 28/12/2004, 12:17
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
probé este codigo y no me funciona.. lo que hago es lo siguiente

Código:
if ($_FILES['archivo']['name'] = "image/jpeg" || $_FILES['archivo']['name'] = "image/gif" || $_FILES['archivo']['name'] = "image/png") { 
      
    $archivo_nombre = $_FILES['archivo']['name'];  
      //subir el archivo y guardar datos en la BDD

}else{

header ("location:advertencia.php?mensaje_error=8");
}

pero no funciona.. si pongo un .doc me lo pasa igual y lo sube a la carpeta...
__________________
Buena Vida...
Francisco
  #10 (permalink)  
Antiguo 28/12/2004, 12:24
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Estas asignando valores en lugar de compararlos.

Código PHP:
if ($_FILES['archivo']['name'] == "image/jpeg" || $_FILES['archivo']['name'] == "image/gif" || $_FILES['archivo']['name'] == "image/png") { 
      
    
$archivo_nombre $_FILES['archivo']['name'];  
      
//subir el archivo y guardar datos en la BDD

}else{

header ("location:advertencia.php?mensaje_error=8");


Suerte!!!!!
  #11 (permalink)  
Antiguo 28/12/2004, 12:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bluesman74cl

no es $_FILES['archivo']['name'] = "image/jpeg" .. lo que debes usar sino:
$_FILES['archivo']['type'] = "image/jpeg"

y así con todas .. La propiedad "type" es la que contiene el formato MIME del archivo que estás subiendo .. no "name".

Un saludo,
  #12 (permalink)  
Antiguo 28/12/2004, 12:49
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Cita:
Iniciado por Cluster
Bluesman74cl

no es $_FILES['archivo']['name'] = "image/jpeg" .. lo que debes usar sino:
$_FILES['archivo']['type'] = "image/jpeg"

y así con todas .. La propiedad "type" es la que contiene el formato MIME del archivo que estás subiendo .. no "name".

Un saludo,
entiendo Cluster pero es que lo intenté con el "Type" y tampoco funciona..

será porque antes de esas lineas tengo este condicional??

Código:
$patron = '([<>/^`%])';
foreach ( $_POST as $index => $value ) { 
    $$index = eregi_replace($patron, "",$_POST[$index]); 
}// fin del foreach
__________________
Buena Vida...
Francisco

Última edición por Bluesman74cl; 28/12/2004 a las 12:55
  #13 (permalink)  
Antiguo 28/12/2004, 13:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. no sé para que usas ese código .. pero lo único que te puedo asegurar es que el archivo, su nombre y demás propiedades no está en el array $_POST sino en $_FILES

Has hecho un:
echo $_FILES['archivo']['type'];

para ver que te devuelve? ...

Un saludo,
  #14 (permalink)  
Antiguo 28/12/2004, 14:24
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Cita:
Iniciado por Cluster
Pues .. no sé para que usas ese código .. pero lo único que te puedo asegurar es que el archivo, su nombre y demás propiedades no está en el array $_POST sino en $_FILES

Has hecho un:
echo $_FILES['archivo']['type'];

para ver que te devuelve? ...

Un saludo,

Me imprime un 1
O_o haber. alcarame algo Cluster $_FILES['nombre_del_input']['type'] es asi verdad??
__________________
Buena Vida...
Francisco
  #15 (permalink)  
Antiguo 28/12/2004, 14:44
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 1 mes
Puntos: 9
Ya lo arreglé.. y la neta que no sé que hice.. O_O
__________________
Buena Vida...
Francisco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:19.