Foros del Web » Programando para Internet » PHP »

Subir varias imágenes + thumbnails

Estas en el tema de Subir varias imágenes + thumbnails en el foro de PHP en Foros del Web. Hola! tengo un script para subir muchas imágenes. Es un coñazo y el problema soy yo que no entiendo los arrays y me cuesta mazo ...
  #1 (permalink)  
Antiguo 09/04/2008, 10:14
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 22 años, 6 meses
Puntos: 59
Subir varias imágenes + thumbnails

Hola! tengo un script para subir muchas imágenes. Es un coñazo y el problema soy yo que no entiendo los arrays y me cuesta mazo trabajarlos.

Tengo un formulario con
Código:
<FORM name=globe method=POST ACTION="upload.php" enctype=multipart/form-data>
<input type=file name=img1 size=30><br>
<input type=file name=img2 size=30><br>
<input type=file name=img3 size=30><br>
<input type=file name=img4 size=30><br>

<INPUT TYPE="submit" NAME="accion" VALUE="Enviar">
Luego tengo este script para subir y crear thumbnails:
Código PHP:
//Subir primera imagen
srand (time());
$tempo rand (100000000999999999);



    
    
//Chequea el tamano de la imagen
if (($sizelim == "yes") && ($img1_size $size)) {
$log1 .= "Imagen 1 es muy grande<br>";

} else {

//borra espacios en blanco y lo 'minisculiza'
$img1_name strtolower($img1_name);
$img1_name ereg_replace" """$img1_name);

//Revisa si el archivo es una imagen
if (($img1_type == $cert1) or ($img1_type == $cert2)) {
@
copy($img1"$temporal/$img1_name") or $log .= "No se pudo copiar la imagen 1 al servidor, aseg&uacute;rate que es una imagen .JPG<br>";
rename ("$temporal/$img1_name""$abpath/$tempo$img1_name");
if (
file_exists("$abpath/$tempo$img1_name")) {



    
    

$first=ImageCreateFromJPEG("$abpath/$tempo$img1_name") or die("No pudo abrir la imagen");

// Tamaño del Thumbanil (de la imagen a generar ..) 
    
$picsize 150
     
    
// Se obtienen los datos del ancho y alto de la imagen. 
    
$new_w imagesx($first); 
    
$new_h imagesy($first); 

    
// Se calcula la relación alto/ancho 
    
$aspect_ratio $new_h $new_w
     
    
// Se ajusta al nuevo tamaño 
    
$new_w $picsize
    
$new_h abs($new_w $aspect_ratio);
 
$second=ImageCreateTrueColor($new_w,$new_h) or die("No pudo crear la imagen"); 
ImageCopyResized($second,$first,0,0,0,0,$new_w,$new_h,imagesx($first),imagesy($first)) or die("coudln't resize image"); 
ImageJPEG($second,"thumb/$tempo$img1_name") or die("couldn't save image"); 
//crea el thumbnail (usando libreria GD de PHP)

 

$log1 .= "ok";



}
} else {

$log1 .= "Campo Vacío";

$tempo "";
}

Pero lo repito cambiando las variables para cada una de las imagenes siguientes. No quiero escribir la misma chorrada 20 veces si son 20 imagenes a subir, es posible hacer un ciclo o algo así?
No se como =(

Gracias de antemano.
__________________
Cool Village
@Wakkos
  #2 (permalink)  
Antiguo 09/04/2008, 10:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Subir varias imágenes + thumbnails

Hola Wakkos,

Puedes hacerlo así:
Código PHP:
foreach( $_FILES as $archivo ) {
       
$img_name $archivo['name'];
       
$type $archivo['type'];

Saludos.
  #3 (permalink)  
Antiguo 17/04/2008, 05:35
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 22 años, 6 meses
Puntos: 59
Re: Subir varias imágenes + thumbnails

Argg!! complicado. Odio los ciclos.

El formulario sigue igual, coloco todo el script.

Código PHP:
<?

//Mis variables

$temporal "/web/htdocs/new_esposas/temp";
$abpath "/web/htdocs/new_esposas/fotos"//Path a donde las subimos
$sizelim "yes"// ¬¬ obvio
$size "311200"//Que limite de tamaño

//Tipos de imagenes permitidos

$cert1 "image/pjpeg"//Jpeg type 1
$cert2 "image/jpeg"//Jpeg type 2
$log ""//Variable para guardar el estado de cada imagen

//Vamos a por el puto ciclo:

foreach( $_FILES as $archivo ) {

       
$img_name $archivo['name'];
       
$type $archivo['type'];

srand (time());
$tempo rand (100000000999999999);
//Chequea el tamaño de la imagen
if (($sizelim == "yes") && ($img1_size $size)) {
$log1 .= "Imagen 1 es muy grande<br>";

} else {

//borra espacios en blanco y lo 'minisculiza'
$img1_name strtolower($img1_name);
$img1_name ereg_replace" """$img1_name);

//Revisa si el archivo es una imagen
if (($img1_type == $cert1) or ($img1_type == $cert2)) {
@
copy($img1"$temporal/$img1_name") or $log .= "No se pudo copiar la imagen 1 al servidor, aseg&uacute;rate que es una imagen .JPG<br>";
rename ("$temporal/$img1_name""$abpath/$tempo$img1_name");
if (
file_exists("$abpath/$tempo$img1_name")) {


$log1 .= "ok";
}
} else {

$log1 .= "Campo Vacío";

$tempo "";
}
}

}  
//Obtenemos la fecha
$fecha date("Y/m/d");
// introducimos en la base de datos
if ((($log1 == "ok") or ($log1 == "Campo Vacío")) AND (($log2 == "ok") or ($log2 == "Campo Vacío")) AND (($log3 == "ok") or ($log3 == "Campo Vacío")) AND (($log4 == "ok") or ($log4 == "Campo Vacío")))
 {
echo 
"CONTACTO AGREGADO<br><br> reporte de imagenes:<br> Imagen 1".$log1."<br>Imagen 2".$log2."<br>Imagen 3".$log3."<br>Imagen 4".$log4."<br>";
mysql_query("insert into pre_esposas (nick,mensaje,imagen1,imagen2,imagen3,imagen4,fecha,titulo) values ('$nickUsuarioL','$mensaje','$tempo$img1_name','$tempo2$img2_name','$tempo3$img3_name','$tempo4$img4_name','$fecha','$titulo')",$link);
}
else {
echo 
"A ocurrido un error con alguna de las imágenes, asegúrate que cumplen con las normas requeridas: que sean en formato JPG y el nombre no debe contener caracteres especiales (&ntilde;, &Ntilde;, espacios en blanco, _, - etc...). Tampoco deben sobrepasar los 50KB de peso.<br><br><b>Reporte de imagenes:</b><br> ".$log1."<br>".$log2."<br>".$log3."<br>".$log4."<br>";
}
?>
no me guarda en la base de datos (lógico, la variable $log no obtiene valores 1 2 3 o 4) y me sube una sola imagen. No se como hacer para que la variable de archivo enviada por el formulario sea "entendida" por el ciclo y este las procese a todas...
No se si me explico.
=(
__________________
Cool Village
@Wakkos
  #4 (permalink)  
Antiguo 17/04/2008, 08:05
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 22 años, 6 meses
Puntos: 59
Re: Subir varias imágenes + thumbnails

Hecho con un pequeño

Código PHP:
for ($i 1$i <= $num_files$i++) { 
Ahora otro problema...dentro del ciclo solo tengo las imagenes subidas, me gustaría obtener sus nombres uno por uno para meter ne la base de datos en una misma fila.

En el ciclo llega un punto donde tengo el nombre de ESA imagen:
$upload_dir$tempo$img_name

Tempo es un numero random, por eso necesito extraer la variable en ese punto y guardarla en x sitio, es posible? para luego meterla en mi base de datos con

Código PHP:
mysql_query("insert into pre_esposas (imagen1,imagen2,imagen3,...N) values ('$tempo$img1_name','$tempo2$img2_name','$tempo3$img3_name',...N)",$link); 
__________________
Cool Village
@Wakkos
  #5 (permalink)  
Antiguo 17/04/2008, 09:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Subir varias imágenes + thumbnails

Hola Wakkos,

Guarda el nombre en un arreglo, y posteriormente puedes usar implode para transformarlo en una variable de texto.

Saludos.
  #6 (permalink)  
Antiguo 17/04/2008, 17:04
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 22 años, 6 meses
Puntos: 59
Re: Subir varias imágenes + thumbnails

Ves? soy un inútil para arreglos, y menos aun extraer variables de ellos =(
Voy a ver que encuentro por php.net.
__________________
Cool Village
@Wakkos
  #7 (permalink)  
Antiguo 17/04/2008, 17:18
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: Subir varias imágenes + thumbnails

Puedes modificar esto y usarlo a tu favor..

http://www.forosdelweb.com/f18/duda-...ltiple-528549/

cambia las encuestas por Archivos y listo saludos
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #8 (permalink)  
Antiguo 17/04/2008, 17:37
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 22 años, 6 meses
Puntos: 59
Re: Subir varias imágenes + thumbnails

La verdad no me vale de mucho, no veo donde definir el array ni done extraer los resultados, que es lo que necesito =(
__________________
Cool Village
@Wakkos
  #9 (permalink)  
Antiguo 18/04/2008, 06:33
Avatar de Wakkos
Colaborador
 
Fecha de Ingreso: octubre-2001
Ubicación: (cerca)
Mensajes: 1.795
Antigüedad: 22 años, 6 meses
Puntos: 59
Re: Subir varias imágenes + thumbnails

ale, sin usar implode.

Si guardo las variables en un array luego lo meto directamente en la base de datos con $array[0], $array[1]... etc

Acias a todos!
Edit: ya se que era una gilipollez, pero lo dicho: soy negao pa arrays, esto es todo un logro!
__________________
Cool Village
@Wakkos
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:02.