Comunidad de diseño web y desarrollo en internet online

Validar archivos en php solo imagenes

Citar            
MensajeEscrito el 06 Ene 2014 07:09 pm
Hola, tengo un problema para validar este código (el cual funciona ok) pero no puedo hacer que solo se suban imágenes JPG ya que si subo un archivo con cualquier extensión por ejemplo: juan.TXT, me lo convierte a 0.JPG.
alguna idea de como puedo hacer que si no es un JPG, me tire un echo y me cancele la subida de archivos?
acá les dejo el código, se agredece!
El if que está de validación del JPG no funciona!

<?php

$archivo = $_FILES['archivo']['tmp_name'];
$cantidad = count($archivo);
//INVENTADO NOMBRE DE CARPETA
$hora = date("H")+8;
$carpeta = $user;
@$nuevodirectorio = "up/$carpeta";
@mkdir ($nuevodirectorio);
$directorio = "$nuevodirectorio/";

//INSERTA ITERATIVAMENTE

for ($n="0"; $n<$cantidad; $n++) {
$archivo_codigo = $archivo[$n];
$nombre_archivo = $n.".jpg";
$archivo_subir = $directorio . $nombre_archivo;

if( $_FILES['archivo']['type'] == "image/jpg" ){
echo "imagen valida";
}
else{
echo "imagen invalida";
}

if (move_uploaded_file($archivo_codigo, $archivo_subir)) {
print("OK.<br/>");
} else {
print("Error de conexion con el servidor.<br/>"); }
}


?>

Por ferposca

2 de clabLevel



Genero:Masculino  

Diseño web

chrome
Citar            
MensajeEscrito el 06 Ene 2014 10:28 pm
Hay muchas maneras amigo.

una forma muy sencilla es con un explode($nombre-del-archivo);

Eso te genera un array...

Código PHP :

$fragmentos = explode(".", $nombre_del_archivo);
$extension = end($fragmentos);

echo $extension;


para Validarla

Código PHP :

$extensiones_validas = array("jpg", "png", "gif");

$valido = false;
foreach ($extensiones_validas as $valorValido){
     if($extension == $valorValido){ $valido == true; break; }
}

if($valido){ echo "archivo valido"; }

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 07 Ene 2014 12:44 pm
Para validar, al código de elporfirio le haría los siguientes cambios:

Código PHP :

$extensiones_validas = array("jpg", "png", "gif");

if (in_array($extension, $extensiones_validas)) {
   echo "archivo valido";
}


La función pathinfo de PHP te proporciona más información útil sobre el archivo que estás tratando, especialmente la extensión del mismo porque el código propuesto por elporfirio tiene un fallo: si el archivo tiene por nombre "jpg" sin extensión, pasa la validación ;).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Ene 2014 12:41 am
Hola, gracias por su respuesta, el tema es que me tira un error....
Este es el código que agregue

<?php

$archivo = $_FILES['archivo']['tmp_name'];
$cantidad = count($archivo);
//INVENTADO NOMBRE DE CARPETA
$hora = date("H")+8;
$carpeta = $user;
@$nuevodirectorio = "up/$carpeta";
@mkdir ($nuevodirectorio);
$directorio = "$nuevodirectorio/";

//INSERTA ITERATIVAMENTE
$fragmentos = explode(".", $archivo);
$extension = end($fragmentos);

echo $extension;

$extensiones_validas = array("jpg", "png", "gif");



for ($n="0"; $n<$cantidad; $n++) {
$archivo_codigo = $archivo[$n];
$nombre_archivo = $n.".jpg";
$archivo_subir = $directorio . $nombre_archivo;


if (in_array($extension, $extensiones_validas)) {
echo "archivo valido";
}



if (move_uploaded_file($archivo_codigo, $archivo_subir)) {
print("OK.<br/>");
}else{
print("Error de conexion con el servidor.<br/>"); }
}

?>


Y el error que me tria (y tampoco me sube los archivos) es

Warning: explode() expects parameter 2 to be string, array given in /home/cvupload/public_html/cv/inc/form_inscripcion.php on line 14

Warning: end() expects parameter 1 to be array, null given in /home/cvupload/public_html/cv/inc/form_inscripcion.php on line 15
OK.

Por ferposca

2 de clabLevel



Genero:Masculino  

Diseño web

chrome
Citar            
MensajeEscrito el 09 Ene 2014 03:05 pm
Hola, ¿sabes ingles? esto te ayudará mucho en la resolución de problemas.

El primer warning, es por que tu variable "$archivo" no lleva una cadena de texto.
de ahi el segundo warning.

comprueba que tenga un texto ¿como?

var_dump($archivo);

Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.