Foros del Web » Programando para Internet » PHP »

(Consulta) Problema con upload de imágenes.

Estas en el tema de (Consulta) Problema con upload de imágenes. en el foro de PHP en Foros del Web. Buenas... Tengo un formulario con un upload de archivos. El upload funciona bien como todo el formulario, pero quiero q si el usuario no envia ...
  #1 (permalink)  
Antiguo 15/03/2011, 20:07
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
(Consulta) Problema con upload de imágenes.

Buenas...
Tengo un formulario con un upload de archivos.
El upload funciona bien como todo el formulario, pero quiero q si el usuario no envia ninguna imagen, q el upload no haga nada.
Es decir, tengo esto:

Código PHP:

// Procesar imágenes antes de enviar e insertar

if (isset ($_FILES["archivos"]) ) {         
             
             
            
$cant count($_FILES["archivos"]["name"]);
        
 
            for (
$i 0$i $cant$i++){
            
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$nombre_img $_FILES["archivos"]["name"][$i];
            
$tipo_img $_FILES["archivos"]["type"][$i];
            
$size_img $_FILES["archivos"]["size"][$i];
            

            
// Comprobar tipo y tamaño de imágen
            
if ( (strpos($tipo_img"gif") || strpos($tipo_img"jpeg") || strpos($tipo_img"png")) && ($size_img 200000)  )
            { 
                echo 
'<script type="text/javascript">alert("Recuerde: el tamaño de las imágenes no deben pasar los 200 kb y se permiten extensiones .gif  .jpg y .png - Haga click en ACEPTAR e intente nuevamente.");history.back();</script>';
            
            }
            else
            { 
             
                       
            
$random_digit=rand(0000,9999);
            
//combino el numero con el nombre
            
$nuevo_nom=$random_digit.$nombre_img;
            
                
            echo 
$multiimg .= "$nuevo_nom ";
            
            }
   
 }
//Fin ciclo for



}else{
echo 
"nada";
}
//Fin procesa imágenes 
Es mas extenso el codigo, ya q falta el insert y todo lo demas pero esta es la parte q no puedo solucionar.
Asi como esta, funciona bien, pero si el usuario no envia una imagen, sale este aviso:

Código PHP:
echo '<script type="text/javascript">alert("Recuerde: el tamaño de las imágenes no deben pasar los 200 kb y se permiten extensiones .gif  .jpg y .png - Haga click en ACEPTAR e intente nuevamente.");history.back();</script>'
Entonces lo q yo quiero es q si el usuario envia una imagen, q haga todo el proceso, pero si el usuario no envia imagen, q no avise nada sobre el upload, se entiende?
Ya probe poniendo if (!empty($_FILES) ) pero no hace nada.
Gracias.
Saludos.
  #2 (permalink)  
Antiguo 15/03/2011, 20:36
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: (Consulta) Problema con upload de imágenes.

Agregale una validacion luego de $cant para saber si es igual a 0 para que le envies el mensaje al usuario.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 15/03/2011, 20:53
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Ok, a ver q sale.
  #4 (permalink)  
Antiguo 15/03/2011, 21:21
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Le hice un echo a $cant sin imagen (o sea q el campo file quedo vacio) y me da igual a 1, como puede ser si no estoy mandando imagen?
  #5 (permalink)  
Antiguo 15/03/2011, 21:39
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: (Consulta) Problema con upload de imágenes.

Entonces haz un isset() y un empty() a $_FILES["archivos"]["name"] para ver si hay...

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 15/03/2011, 21:46
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Tampoco, eso fue lo primero q hice isset y luego empty y al reves tambien.
Es como q no reconoce los filtros, la verdad no entiendo.
Gracias, voy a seguir revisando el codigo.
  #7 (permalink)  
Antiguo 15/03/2011, 21:54
 
Fecha de Ingreso: marzo-2011
Ubicación: Palmira
Mensajes: 35
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Y si intentas mirando que valor toma

Código PHP:
Ver original
  1. $_FILES["archivos"]["size"]

cuando no mandas ninguna imagen y despues lo validas mirando si el valor es igual
al que acabas de comprobar ??

es una idea,

saludos
  #8 (permalink)  
Antiguo 15/03/2011, 22:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: (Consulta) Problema con upload de imágenes.

Me parece que si tienes 5 campos tipo file con atributo name="archivos[]", $cant siempre va a ser 5, por lo que deberas recorrer cada elemento para revisar si se subio algun archivo o no, ejemplo:

Código PHP:
Ver original
  1. for($i = 0; $i < count($_FILES['archivos']['name']); $i++) {
  2.     if($_FILES['archivos']['name'][$i] != '') { // Si el nombre no esta vacio es porque se envio un archivo
  3.         // Aqui verificas tipo de archivo, extension, tamaño etc.
  4.         // Si cumple los requisitos... entonces lo procesas
  5.         // No olvides revisar $_FILES['archivos']['error'][$i] para ver que sea cero (No hay error)
  6.     }
  7. }
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 15/03/2011, 22:50
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Es lo q acabo de hacer pero no reconoce el filtro.
Por ejemplo, el valor de $cant sin ninguna imagen es = 1, o sea q mi cero es 1 y no se como
trabajar porque si no subo imagen, $cant es igual a 1, pero si subo una imagen, el valor de $cant tambien es igual a 1, por eso se me complica.

No entiendo por q $cant es igual a 1 si no estoy enviando imagen.
  #10 (permalink)  
Antiguo 15/03/2011, 22:58
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Aqui subi un ejemplo: http://pruebayejemplos.net23.net/upload.php


El archivo de proceso es este:

Código PHP:

// Procesar imágenes antes de enviar e insertar


if (isset ($_FILES["archivos"]) ) {         
   
  
            
$cant count($_FILES["archivos"]["name"]);          
            
            echo 
$cant;
            
            exit;
            
            for (
$i 0$i $cant$i++){
            
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$nombre_img $_FILES["archivos"]["name"][$i];
            
$tipo_img $_FILES["archivos"]["type"][$i];
            
$size_img $_FILES["archivos"]["size"][$i];
            

            
// Comprobar tipo y tamaño de imágen
            
if (!((strpos($tipo_img"gif") || strpos($tipo_img"jpeg") || strpos($tipo_img"png")) && (    $size_img 200000)))
            { 
                echo 
'<script type="text/javascript">alert("Recuerde: el tamaño de las imágenes no deben pasar los 200 kb y se permiten extensiones .gif  .jpg y .png - Haga click en ACEPTAR e intente nuevamente.");history.back();</script>';
            
            }
            else
            { 
             
                
$multiimg .= "$nombre_img ";
                 
                 echo 
$multiimg;
     
            }
   
}
//Fin ciclo for



}else{
echo 
"nada";
}
//Fin procesa imágenes 

Como podran ver, sin imagen, $cant es igual a 1 Y hasta una sola imagen, tambien es igual a 1
  #11 (permalink)  
Antiguo 15/03/2011, 23:07
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Perdon triby, no habia visto tu respuesta.
Ahora pruebo.
  #12 (permalink)  
Antiguo 15/03/2011, 23:15
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: (Consulta) Problema con upload de imágenes.

Creo q ahi se soluciono con tu ejemplo Triby.

Código PHP:

// Procesar imágenes antes de enviar e insertar


if (isset ($_FILES["archivos"]) ) {         
   
  
for(
$i 0$i count($_FILES['archivos']['name']); $i++) {
            
            if(
$_FILES['archivos']['name'][$i] != '') {
            
            
$tmp_name $_FILES["archivos"]["tmp_name"][$i];
            
$nombre_img $_FILES["archivos"]["name"][$i];
            
$tipo_img $_FILES["archivos"]["type"][$i];
            
$size_img $_FILES["archivos"]["size"][$i];
            

            
// Comprobar tipo y tamaño de imágen
            
if (!((strpos($tipo_img"gif") || strpos($tipo_img"jpeg") || strpos($tipo_img"png")) && (    $size_img 200000)))
            { 
                echo 
'<script type="text/javascript">alert("Recuerde: el tamaño de las imágenes no deben pasar los 200 kb y se permiten extensiones .gif  .jpg y .png - Haga click en ACEPTAR e intente nuevamente.");history.back();</script>';
            
            }
            else
            { 
             
                
$multiimg .= "$nombre_img ";
                 
                 echo 
$multiimg."<br />";

                             echo 
$_FILES['archivos']['error'][$i];
     
            }
            
   }else{
   
   echo 
"No envia ninguna imagen";
   
   }
   
   
   
}
//Fin ciclo for



}else{
echo 
"nada";
}
//Fin procesa imágenes 

Última edición por reborn; 15/03/2011 a las 23:23

Etiquetas: upload
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 10:06.