Foros del Web » Programando para Internet » PHP »

Me crea un archivo 'nombre_Array' al subir imágenes

Estas en el tema de Me crea un archivo 'nombre_Array' al subir imágenes en el foro de PHP en Foros del Web. Hola a todos/as. Mirad. tengo un problema. tengo desarrollada una pequeña aplicación para subir imágenes (más de una) a una carpeta del servidor y a ...
  #1 (permalink)  
Antiguo 22/01/2010, 01:41
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Me crea un archivo 'nombre_Array' al subir imágenes

Hola a todos/as. Mirad. tengo un problema. tengo desarrollada una pequeña aplicación para subir imágenes (más de una) a una carpeta del servidor y a su vez guardar las rutas en una tabla de una base de datos. la aplicación me crea una imagen en thumbails y la otra en tamaño normal.

cuál es el problema? pues el problema es que:

1.- la aplicación genera un prefijo aleatorio de números y letras que asigna al nombre de cada imagen. ESTO LO HACE BIEN. OK.

2.- la aplicación inserta correctamente en la tabla de la base de datos las rutas de esas imágenes en el servidor. ESTO LO HACE BIEN. OK.

3.- la aplicación genera una imagen thumbail del original y otra grande, redimensionadas a las dimensiones que yo le doy. ESTO LO HACE BIEN. OK.

4.- la aplicación sube a una carpeta determinada del servidor determinada tanto el thumbail como la imagen grande. ESTO LO HACE BIEN. OK. Pero además, en este paso, además de subirme las dos imágenes (la pequeña y la grande), inserta otro archivo más. es decir, hace esto:

a) Inserta la imagen pequeña de nombre 'th_prefijo_nombreoriginal.jpg'; (el th es para identificar que es la thumbails)

b) Inserta la imagen grande, cuyo nombre es el mismo que el anterior, con el mismo prefijo, pero sin el th para diferenciarla del thumbails.

c) Y además de los dos archivos anteriores, que es lo correcto, me inserta otro archivo más llamado 'prefijo_Array' que no es imagen ni es nada.

Ejemplo:
Supongamos que subo una imagen de nombre 'carlitos'. Supongamos que la aplicación, que lo primero que hace es asignar un prefijo aleatorio de números y letras, genera ese prefijo y lo llama a3b1c2. Pues entonces lo que tenemos en la carpeta una vez subida las imágenes es:

Archivo thumbails: th_a3b1c2_carlitos.jpg
Archivo grande: a3b1c2_carlitos.jpg
Archivo "extraño": a3b1c2_Array (no tiene extension ni nada)

¿por qué me pasa esto?

os dejo el código de todo:


tabla 'imagenes' de la base de datos:

id_imagen --- autonumérico
imagengran --- campo donde se almacena la ruta de la imagen grande
imagenpequ_th --- campo donde se almacena la ruta de la imagen pequeña o thumbail

Formulario para subir imágenes (lo reducimos a dos imágenes):

Código PHP:
<form name=form action=subir.php' ENCTYPE=multipart/form-data METHOD=POST>
<input type='
file' name='archivo[]' class=caja></br>
<input type='
file' name='archivo[]' class=caja></br>
<input type='
submit' value='Siguiente class=caja>
</
form
Archivo subir.php

Código PHP:
include ("conectar.php"); //conexión a la base de datos    

//funcion para redimensionar la imagen

function 
redimensionar($type$img_original$img_nueva$img_nueva_anchura$img_nueva_altura$img_nueva_calidad)
{
$defecto 'defecto.jpg'//imagen por defecto
if(file_exists($img_original)) {
// crear imagen desde original
$type=strtolower($type);
switch(
$type)
{
case 
'jpeg'$img ImageCreateFromJPEG($img_original); break;
case 
'jpg'$img ImageCreateFromJPEG($img_original); break;
case 
'png'$img ImageCreateFromPNG($img_original); breaK;
case 
'gif'$img ImageCreateFromGIF($img_original); breaK;
case 
'wbmp'$img ImageCreateFromWBMP($img_original); break;
default: 
$img ImageCreateFromJPEG($defecto); break;
}
} else {
$img ImageCreateFromJPEG($defecto); 
}
if(!empty(
$img)) {
$new_w_R ImageSX($img);
$new_h_R ImageSY($img);
//$img_nueva_altura = 50;
// se calcula la relación alto/ancho
$aspect_ratio $new_h_R/$new_w_R;
$aspect_ratio2 $new_w_R/$new_h_R;
if (
$new_w_R >= $new_h_R){
// se ajusta al nuevo tamaño
$img_nueva_altura abs($img_nueva_anchura $aspect_ratio);
}
else{
$img_nueva_anchura abs($img_nueva_altura $aspect_ratio2);}
// crear imagen nueva

$thumb ImageCreateTrueColor($img_nueva_anchura,$img_nueva_altura);
// redimensionar imagen original copiandola en la imagen. La imagen se reajustará al nuevo tamaño
ImageCopyResampled($thumb,$img,0,0,0,0,$img_nueva_anchura,
$img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la imagen redimensionada donde indica $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
}

//finalización del redimensionamiento


$tot count($_FILES["archivo"]["name"]);
for (
$i 0$i $tot$i++)
{
//inseción de imagen
    
$fileSize $_FILES['archivo']['size'][$i];
$fileType $_FILES['archivo']['type'][$i]; 
$local $_FILES['archivo']['name'][$i];  
$remoto $_FILES['archivo']['tmp_name'][$i];
$prefijo substr(md5(uniqid(rand())),0,6);    //generamos el prefijo
$uploaddir "imagenes/"//directorio donde se guardarán las imágenes en el servidor
$max=1500000//tamaño máximo permitido
if($filesize $max){
ini_set("memory_limit","32M");
$uploadfile $uploaddir.$prefijo."_".$_FILES['archivo']['name'] ;    //archivo original

if (move_uploaded_file($remoto$uploadfile)) {
chmod($uploadfile0644);

//redimensionar    
$source=$uploadfile// archivo de origen
$dest =  $uploaddir."/th_".$prefijo."_".$local;//archivo thumbails
$dest2 =  $uploaddir."/".$prefijo."_".$local;//archivo grande
redimensionar("jpg",$source,$dest,100,100,95);//redimensionamos el archivo original a 100x100
redimensionar("jpg",$source,$dest2,600,600,95);    //redimensionamos el archivo original a 600x600
}
$ruta =  "imagenes/".$prefijo."_".$local;
$rutab =  "imagenes/th_".$prefijo."_".$local;
$archivo=$_POST['archivo'][$i];
$id$_GET ['id'];

if (
$local !=="") { 
mysql_query("INSERT INTO imagenes(imagengran,imagenpequ_th) VALUES ('$ruta','$rutab')");
echo 
"exito";    
}
}}} 
me echáis una mano????
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #2 (permalink)  
Antiguo 22/01/2010, 02:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Me crea un archivo 'nombre_Array' al subir imágenes

Código PHP:
Ver original
  1. // Falta especificar el indice numerico:
  2. $uploadfile = $uploaddir.$prefijo."_".$_FILES['archivo']['name'] ;    //archivo original
  3.  
  4. // Asi:
  5. $uploadfile = $uploaddir.$prefijo."_".$_FILES['archivo']['name'][$i] ;    //archivo original
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/01/2010, 04:53
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: Me crea un archivo 'nombre_Array' al subir imágenes

eres un sol....
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Etiquetas: crea, subir
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 19:14.