PHP - Validar tipo de archivo no funciona

 
Vista:
Imágen de perfil de Diego
Val: 29
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por Diego (45 intervenciones) el 23/10/2016 07:42:17
Hola amig@s!

He tenido un poco de problemas al querer comprobar el tipo de archivo que se desea subir al servidor, he estado buscando información y he probado con varios tipos de valores pero aún no logro nada.

Se trata de validar que los archivos sean de formato imagen y he probado con lo siguiente:

image/pjpeg
image/x-png
Image/bmp
image/gif
--------------------------
IMAGETYPE_JPEG
IMAGETYPE_PNG
IMAGETYPE_BMP
IMAGETYPE_GIF

todos me no me han funcionado.

Dejo mi código para que puedan visualizar en donde estoy fallando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
if(isset($_FILES['image'])){
 
  $date = date("j-n-Y");
  $img = $_FILES['image'];
  $name = str_replace(" ", "-",$img['name']);
	$name_img = $date."-".$name;
	$type_img = $img['type'];
	$size_img = $img['size'];
	$tmp_name_img = $img['tmp_name'];
	$folder = "../../../img/products/";
  $save = $folder.$name_img;
 
  // Tipos de archivos permitidos
  $file_types = array("jpg" => IMAGETYPE_JPEG, "png" => IMAGETYPE_PNG, "bmp" => IMAGETYPE_BMP, "gif" => IMAGETYPE_GIF);
  // Válidar tipo de fichero
  if($type_img == $file_types['jpg'] || $type_img == $file_types['png'] || $type_img == $file_types['bmp'] || $type_img == $file_types['gif']){
    // Verificar subida de archivo
    if(!move_uploaded_file($tmp_name_img, $save)){
      echo('<span class="error-msg"><i class="fa fa-times-circle fa-2x"></i>Error al cargar la imagen, inténtelo nuevamente</span>');
    }else{
      echo('<span class="success-msg"><i class="fa fa-check-circle fa-2x"></i>La imagen se cargo correctamente</span>');
      echo('<img src="../../img/products/'.$name_img.'">');
    }
  }else{
    echo('<span class="error-msg"><i class="fa fa-remove fa-2x"></i>El tipo de archivo no esta permitido, solo es posible subir archivos <b>.JPG, .PNG, .BMP y .GIF</span>');
  }
}
 
?>

También intente colocar el operador != y cambiar en el ELSE -> move_uploaded_file(), pero sigue sin funcionar.

Gracias

Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por xve (6935 intervenciones) el 23/10/2016 21:17:32
Hola Diego, no me queda claro exactamente cual es tu problema...

hay algun formato de archivo que no se sube?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 29
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por Diego (45 intervenciones) el 24/10/2016 03:13:31
Hola xve!

El script debe procesar solo archivos de tipo imagen, al seleccionar un archivo jpg, arroja el error.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por Alejandro (157 intervenciones) el 23/10/2016 22:38:41
Hola Diego, no estoy seguro pero me parece que las constantes por ejemplo IMAGETYPE_JPEG devuelven un int, capaz que sea ese el problema.
Capaz que en vez de las constantes podes usar el nombre del mimetype ejemplo: image/png o image/jpeg.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 29
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por Diego (45 intervenciones) el 24/10/2016 03:14:27
Hola Alejandro!

Esos fueron los tipos de valores de comparación que use al inicio pero no funcionaron, por ello lo cambie a IMAGETYPE.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por kip (877 intervenciones) el 24/10/2016 00:03:27
Hola, intentalo de esta forma:

1
2
3
4
$file_types = [ 'image/jpeg', 'image/gif', 'image/png', 'image/bmp' ];
if (in_array($type_img, $file_types)) {
    //CONTINUAS CON LA SUBIDA DE ARCHIVOS
}

Nos avisas si te sirvio.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 29
Ha aumentado su posición en 9 puestos en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por Diego (45 intervenciones) el 24/10/2016 03:20:02
Hola kip!

Me da error de sintaxis: Parse error: syntax error, unexpected '['

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Validar tipo de archivo no funciona

Publicado por kip (877 intervenciones) el 24/10/2016 03:39:14
Intenta armar el array entonces de esta forma:

1
$file_types = array('image/jpeg', 'image/gif', 'image/png', 'image/bmp');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar