- Las imágenes se guardan en el directorio “imágenes/subidas/”
- Los Thumbnail se guardan en el directorio “imágenes/Thumbs”
- Las rutas de las imágenes se guardan en la base de datos.
Por el momento va todo muy bien pero me encontré con el siguiente problema:
Ej.: Si un usuario publica un aviso con una imagen llamada “miaviso.jpg” y otro usuario o el mismo usuario publica otro aviso con una imagen también llamada “miaviso.jpg” estarían compartiendo la misma imagen. Y esto es de gran problema ya que las imágenes podrían tener el mismo nombre pero ser diferentes.
Quisiera saber si existe alguna manera da cambiar el nombre a las imagen al momento de subirlas al directorio o si alguien tiene alguna solución para ayudarme a resolver este problema.
A continuación les dejo el código que utilizó para subir las imágenes
Código PHP:
<?php
$destino = 'imagenes/subidas' ; // destino de guardado de la imagen real
move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' . $_FILES [ 'file' ][ 'name' ]);
$ruta=$_FILES [ 'file' ][ 'name' ];
$thumbs="tn_".$_FILES [ 'file' ][ 'name' ];
function thumbjpeg($imagen,$anchura) {
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
$dir_thumb = "../thumbs/";
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
// el thumbnail se llamaría "tn_imagen1.jpg"
$fecha=date("d-m-Y");
$prefijo_thumb = "tn_";
$camino_nombre=explode("/",$imagen);
// Aquí tendremos el nombre de la imagen.
$nombre=end($camino_nombre);
// Aquí la ruta especificada para buscar la imagen.
$camino=substr($imagen,0,strlen($imagen)-strlen($nombre));
// Intentamos crear el directorio de thumbnails, si no existiera previamente.
if (!file_exists($camino.$dir_thumb))
mkdir ($camino.$dir_thumb, 0777); // or die("No se ha podido crear el directorio $dir_thumb");
// Aquí comprovamos que la imagen que queremos crear no exista previamente
if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {
//echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>";
$img = imagecreatefromjpeg($camino.$nombre); // or die("No se encuentra la imagen $camino$nombre<br>n");
// miramos el tamaño de la imagen original...
$datos = getimagesize($camino.$nombre); // or die("Problemas con $camino$nombre<br>");
// intentamos escalar la imagen original a la medida que nos interesa
$ratio = ($datos[0] / $anchura);
$altura = round($datos[1] / $ratio);
// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);
// con esta función la reescalamos
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
// voilà la salvamos con el nombre y en el lugar que nos interesa.
imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
}
return "ok";
}
$imagen= $destino . '/' . $_FILES [ 'file' ][ 'name' ];
$proceso1= thumbjpeg($imagen, 125);
if($proceso1=="ok"){
//conectamos a la base
include('../include/config.php');
$result = mysql_query("INSERT INTO `imagenes` ( `id` , `ruta` , `thumbs` ) VALUES ('', '$ruta', '$thumbs')");
mysql_close($db);
if($result!=0){
echo "Se ha subido correctamente la imagen y se ha creado correctamente el Thumbnail !";
}
else{
echo "Ha ocurrido un error y no se ha podido subir la imagen, por favor, contacta a mariano ! :P";
}
}
?>