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($uploadfile, 0644);
//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????