Foros del Web » Programando para Internet » PHP »

Hay algo mal en este código.. ?

Estas en el tema de Hay algo mal en este código.. ? en el foro de PHP en Foros del Web. if ($foto[]) { for(i=0; i<5; i++) { $nombre_foto=$HTTP_POST_FILES['foto[i]']['name']; $img_grande[i]=Imagen_mini($foto[i],'150'); $carpetaBase="imgarchivo"; $nombreimagen2 = date("YmHis"); $nombreCarpeta = date("Ymd"); if(!is_dir($nombreCarpeta)) { mkdir("./$carpetaBase/$nombreCarpeta/",0777); chmod("./$carpetaBase/$nombreCarpeta/",0777); } imagejpeg($img_grande[i] ,"./imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg",50); $imagen[i]="/imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg"; } ...
  #1 (permalink)  
Antiguo 04/11/2005, 15:06
 
Fecha de Ingreso: junio-2005
Mensajes: 427
Antigüedad: 18 años, 9 meses
Puntos: 6
Hay algo mal en este código.. ?

if ($foto[])
{
for(i=0; i<5; i++)
{
$nombre_foto=$HTTP_POST_FILES['foto[i]']['name'];

$img_grande[i]=Imagen_mini($foto[i],'150');

$carpetaBase="imgarchivo";
$nombreimagen2 = date("YmHis");
$nombreCarpeta = date("Ymd");
if(!is_dir($nombreCarpeta))
{
mkdir("./$carpetaBase/$nombreCarpeta/",0777);
chmod("./$carpetaBase/$nombreCarpeta/",0777);

}
imagejpeg($img_grande[i] ,"./imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg",50);
$imagen[i]="/imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg";
}
}

Hola a todos.. intento subir varias imágenes al servidor a través d eun form en el que los campos de las imágenes los llamo foto[].. es evidente que hay algo mal porque no funciona..jajaajja el caso es que yo ya no doy más de mi mismo porque no tengo mucha idea.. alguien sabe cm hacer este código bien..

saludos! y gracias!
  #2 (permalink)  
Antiguo 04/11/2005, 15:16
 
Fecha de Ingreso: abril-2005
Mensajes: 287
Antigüedad: 19 años
Puntos: 0
Hola.

Pues nada mas empezar he detectado un error.No puedes poner dentro del if la variable $foto[],los corchetes sobra,ya que aunque sea un array no se referencia de esa manera.Quizas tengas mas errores pero es que ahora no puedo seguir mirandote el código.

Saludos
  #3 (permalink)  
Antiguo 04/11/2005, 18:44
 
Fecha de Ingreso: junio-2005
Mensajes: 427
Antigüedad: 18 años, 9 meses
Puntos: 6
gracias x corregirme!

aun asi sigue sin funcionar.. :( xo gracias de todos modos..

un saludo!
  #4 (permalink)  
Antiguo 04/11/2005, 19:11
Avatar de Aleph  
Fecha de Ingreso: agosto-2001
Ubicación: Kenolandia
Mensajes: 1.061
Antigüedad: 22 años, 8 meses
Puntos: 3
Otro:

$nombre_foto=$HTTP_POST_FILES['foto[i]']['name'];

No hacen falta las comillas simples en [foto[i]]

Saludos
__________________
El Chorizo Comunista
  #5 (permalink)  
Antiguo 05/11/2005, 15:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Yo usaría:

$_FILES['foto']['name'][$i]

tal cual dicta la documentación oficial de PHP al respecto (upload de archivos múltiples:

http://www.php.net/manual/en/feature...d.multiple.php

Un saludo,
  #6 (permalink)  
Antiguo 07/11/2005, 01:04
 
Fecha de Ingreso: junio-2005
Mensajes: 427
Antigüedad: 18 años, 9 meses
Puntos: 6
Gracias a todos por las respuestas..

He pensado que igual sería más fácil en vez de subir todas las imágenes a la vez, subirlas de una a una con una función.. os muestro la función...

function subir_imagen($foto)
{
$nombre_foto=$HTTP_POST_FILES['$foto']['name'];
$img_mini=Imagen_mini($foto,'40');
$img_grande=Imagen_mini($foto,'150');

$carpetaBase="imgarchivo";
$nombreimagen2 = date("YmHis");
$nombreCarpeta = date("Ymd");
if(!is_dir($nombreCarpeta))
{
@mkdir("./$carpetaBase/$nombreCarpeta/",0777);
@chmod("./$carpetaBase/$nombreCarpeta/",0777);
}
imagejpeg($img_grande,"./imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg",50);
$imagen="/imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg";
return $imagen;

}

-------------------------------------------------

Llamadas a la función...

if($foto)
{
$foto=$foto; $imagen1=subir_imagen($foto);
}
if($foto2)
{
$foto=$foto2; $imagen2=subir_imagen($foto);
}

----------------------------------------

De esta forma me crea dos imágenes, pero aparecen en negro, supongo que será porque hay alguna variable que se pierde y por eso no crea bien la imagen.. he probado a poner global img_mini y $foto y nada.. siguen saliendo las dos imágenes en negro..

alguien sabe porqué???

saludos y gracias!
  #7 (permalink)  
Antiguo 07/11/2005, 06:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas @ en las funciones .. eliminas todo mensaje de error que pueda estar arrojandote ..

Por lo demás .. si tu en un formulario HTML tienes vários campos FILE donde subes várias imagenes .. PHP las trabajará como un array ($HTTP_POST_FILES['$foto']['name'];)

Pero .. el uso que le das a tu función no es correcto .. no debes pasarle "$foto" (que no sé de donde sale) .. en tal caso

$foto=$_FILES['foto'];
subir_imagen($foto);

y ahí empezar a trabajar tu función.

Un saludo,
  #8 (permalink)  
Antiguo 07/11/2005, 08:13
 
Fecha de Ingreso: noviembre-2005
Mensajes: 58
Antigüedad: 18 años, 5 meses
Puntos: 0
Tambien te recomendaria que en estado de desarrollo uses:
Código PHP:
error_reporting(E_ALL
Y en produccion (o live, como mas te guste :) ):
Código PHP:
error_reporting(0
Saludos,
pancarne.
  #9 (permalink)  
Antiguo 08/11/2005, 09:37
 
Fecha de Ingreso: junio-2005
Mensajes: 427
Antigüedad: 18 años, 9 meses
Puntos: 6
Hola a todos de nuevo! Antes de nada gracias x las respuestas pero sigo sin hacer nada bien...

Siento ser tan pesado pero he probado de mil formas y sigo sin poder subir varias imágenes, lo normal es que me saque todas las imágenes en negro o que no suba ninguna...

El formulario que envía los campos es del siguiente modo..

<input name="foto1" type="file" id="foto1" size="50">
<input name="foto2" type="file" id="foto2" size="50">
... etc...

########### ARCHIVO SUBIR IMAGENES ##################

if($_FILES['$foto1'])
{
$foto= $_FILES['$foto1'];
$imagen1=subir_imagen($foto);
}
if($_FILES['$foto2'])
{
$foto= $_FILES['$foto2'];
$imagen2=subir_imagen($foto);
}

function subir_imagen($foto)
{
$nombre_foto=$HTTP_POST_FILES['$foto']['name'];
$img_grande=Imagen_mini($foto,'150');
$carpetaBase="imgarchivo";
$nombreimagen2 = date("YmHis"); // Le asigna un nombre a la imagen
$nombreCarpeta = date("Ymd"); // crea una carpeta para cada dia
if(!is_dir($nombreCarpeta)) // comprueba si la carpeta existe, sino la crea
{
mkdir("./$carpetaBase/$nombreCarpeta/",0777);
chmod("./$carpetaBase/$nombreCarpeta/",0777); // le asigna permisos
}
imagejpeg($img_grande,"./imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg",50);
$imagen="/imgarchivo/".$nombreCarpeta."/".$nombreimagen2."_grande.jpg";

return $imagen; // retorna la ruta donde se almacenó la imagen, ej: /imgarchivo/20051103/200511162256_grande.jpg


}



############## OTRO ARCHIVO ###############

// da formato a la imagen con el tamaño especificado

function Imagen_mini($ruta,$picsize)
{
$fuente = imagecreatefromjpeg($ruta);
$imgAncho = imagesx($fuente);
$imgAlto =imagesy($fuente);
//-------------
$ancho = $picsize;
$alto = $picsize;
$imagen = ImageCreateTrueColor($ancho,$alto);
imagecopyresized($imagen,$fuente,0,0,0,0,$ancho,$a lto,$imgAncho,$imgAlto);
return $imagen;
}




#################################################

pancarne, he probado con error_reporting(E_ALL) y me muestra errores como que tengo alguna variable sin asignar pero no tiene nada que ver con la funcion de imagenes, gracias de todos modos siempre es bueno saber algo más... :)

Cluster, $foto es la variable que contiene el fichero, antes las llamaba a todas foto[], pero viendo mi escaso reusltado estoy probando con la funcion que me parece más sencillo...

He probado $foto=$_FILES['foto'];, osea sin el $ delante de foto y me da error la funcion que crea el tamaño de la imagen que le paso, me dice como que no existe o algo asi.. poniendole $ al menos consigo que eso no falle, aunque eso si, me saca todas las imágenes en negro como si no le llegara bien alguna variable a la hora de crear la imagen.. :(

A ver si algún alma caritativa me ilumina el camino...

Saludos desde el lado oscuro.. de las imágenes... xDD
  #10 (permalink)  
Antiguo 08/11/2005, 09:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes un tremendo lio .. usas por un lado $_FILE .. por otro $HTTP_POST_FILES ..

Esto no es correcto:
if($_FILES['$foto2'])

sino:
if($_FILES['foto2'])

$_FILE es un array!! ...

Revisa bien que tus archivos suban al servidor .. que tengas las imagenes donde luego las tomas para aplicar tu resto de funciones GD. Pero antes, aclarate con el código .. sino podrías tener problemas por ahí.

Un saludo,
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 22:23.