hola serverdns, por lo q veo tu estilo es subirla directamente al computador luego llamarlas mediante una sentencia en php... como soy nuevo en esto encontre este codigo en la red, pero tengo una duda, quiero q cada vez q suba una imagen se almacene en la misma divicion por ejemplo , echo("<span class='fotos'><img src=\"http://".$_SERVER['HTTP_HOST']."/fotos/imagenes_pequena.php?ruta=$ruta_completa\"></span>");, pero al subir varias se cree otra divicion al lado y asi ps, un ejemplo claro de esto seria el sistema de fotos thumbs q tiene mercado libre al uno subir una foto se debe de almacenar en una base de datos, tabla, y al pedirla la llame mediante una ID, creo q seria asi la solucion ya que cuando subo una imagen me la muestra bn, pero cuando subo otra me reemplaza la q subi anteriormente aqui les dejo el codigo para q me ayuden.
UPLOAD.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
var numero = 0; //Esta es una variable de control para mantener nombres
//diferentes de cada campo creado dinamicamente.
evento = function (evt) { //esta funcion nos devuelve el tipo de evento disparado
return (!evt) ? event : evt;
}
//Aqui se hace lamagia esta funcion crea dinamicamente los nuevos campos file
addCampo = function () {
//Creamos un nuevo div para que contenga el nuevo campo
nDiv = document.createElement('div');
//con esto se establece la clase de la div
nDiv.className = 'archivo';
//este es el id de la div, aqui la utilidad de la variable numero
//nos permite darle un id unico
nDiv.id = 'file' + (++numero);
//creamos el input para el formulario:
nCampo = document.createElement('input');
//le damos un nombre, es importante que lo nombren como vector, pues todos los campos
//compartiran el nombre en un arreglo, asi es mas facil procesar posteriormente con php
nCampo.name = 'archivos[]';
//Establecemos el tipo de campo
nCampo.type = 'file';
//Ahora creamos un link para poder eliminar un campo que ya no deseemos
a = document.createElement('a');
//El link debe tener el mismo nombre de la div padre, para efectos de localizarla y eliminarla
a.name = nDiv.id;
//Este link no debe ir a ningun lado
a.href = '#';
//Establecemos que dispare esta funcion en click
a.onclick = elimCamp;
//Con esto ponemos el texto del link
a.innerHTML = 'Eliminar';
//Bien es el momento de integrar lo que hemos creado al documento,
//primero usamos la función appendChild para adicionar el campo file nuevo
nDiv.appendChild(nCampo);
//Adicionamos el Link
nDiv.appendChild(a);
//Ahora si recuerdan, en el html hay una div cuyo id es 'adjuntos', bien
//con esta función obtenemos una referencia a ella para usar de nuevo appendChild
//y adicionar la div que hemos creado, la cual contiene el campo file con su link de eliminación:
container = document.getElementById('adjuntos');
container.appendChild(nDiv);
}
//con esta función eliminamos el campo cuyo link de eliminación sea presionado
elimCamp = function (evt){
evt = evento(evt);
nCampo = rObj(evt);
div = document.getElementById(nCampo.name);
div.parentNode.removeChild(div);
}
//con esta función recuperamos una instancia del objeto que disparo el evento
rObj = function (evt) {
return evt.srcElement ? evt.srcElement : evt.target;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<form name="formu" id="formu" action="imagenes.php" method="post" enctype="multipart/form-data">
<dl>
<dt><label>Archivos a Subir:</label></dt>
<dd><div id="adjuntos">
<input type="file" name="archivos[]" /><br />
</div></dd>
<dt><a href="#" onClick="addCampo()">Subir otro archivo</a></dt>
<dd><input type="submit" value="Enviar" id="envia" name="envia" /></dd>
</dl>
</form>
</body>
</html>
redimencionar<?php
/*### ESTE SCRIPT ES PARA IMAGENES JPG, GIF, PNG###*/
$ruta_imagen= "$ruta_completa";
//este es el acho maximo el alto es proporcional para no distorcionar la imagen
$medida = "350";
//aqui vamos a obtener los datos de la imagen en el caso de no estar buena la imagen por alguna razon dara este mensaje
switch ($tamanio[2])
{
case 1: $imagen= @imagecreatefromgif($ruta_imagen) or die ("<center><br /><br /><strong>la imagen esta dañada o <br />tiene un formato no valido</strong></center>");
break;
case 2: $imagen= @imagecreatefromjpeg($ruta_imagen) or die ("<center><br /><br /><strong>la imagen esta dañada o <br />tiene un formato no valido</strong></center>");
break;
case 3: $imagen= @imagecreatefrompng($ruta_imagen) or die ("<center><br /><br /><strong>la imagen esta dañada o <br />tiene un formato no valido</strong></center>");
}
//obtenemos el tamaño de la imagen
$ancho = @imagesx ($imagen);
$alto = @imagesy ($imagen);
//aqui compruebo si el ancho de la imagen es mayor que el establesido como limite de ser menor no se ejecuta el escript de redimencionar de ser mayor se procede a ajustarla a la medida
if ($ancho > $medida){
if($ancho>=$alto)
{
$nuevo_alto = round($alto * $medida / $ancho,0);
$nuevo_ancho=$medida;
}
else
{
$nuevo_ancho = round($ancho * $medida / $alto,0);
$nuevo_alto =$medida;
}
//aqui se guarda en la bbdd la ruta y los datos que necesitemos
$ruta_ruta_1 = "$ruta_completa";
$conexion_ruta = @mysql_connect("localhost","root","48202d") or die("No se pudo realizar la conexion con el servidor.");
@mysql_select_db("albunes",$conexion_ruta) or die("No se puede seleccionar BD");
$consulta_insertar = "INSERT INTO dir_imagenes (id, ruta_normal, username, ancho, alto, albun) VALUES ('', '$ruta_ruta_1', '$usuario', '$nuevo_ancho', '$nuevo_alto', '".$album."')";
mysql_query($consulta_insertar,$conexion_ruta ) or die("No se pudo insertar los datos en la base de datos.");
$imagen_nueva = @imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
@imagecopyresampled($imagen_nueva, $imagen, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
@imagejpeg($imagen_nueva, "$ruta_imagen");
@imagedestroy($imagen_nueva);
@imagedestroy($imagen);
//esto se ejecuta si la imagen es menor que el ancho estrablecido
}else{
$imagen_nueva = @imagecreatetruecolor($ancho, $alto);
@imagecopyresampled($imagen_nueva, $imagen, 0, 0, 0, 0, $ancho, $alto, $ancho, $alto);
@imagejpeg($imagen_nueva, "$ruta_imagen", 90);
@imagedestroy($imagen_nueva);
@imagedestroy($imagen);
//aqui se guarda en la bbdd la ruta y los datos que necesitemos
$ruta_ruta_1 = "$ruta_completa";
$conexion_ruta = @mysql_connect("localhost","root","48202d") or die("No se pudo realizar la conexion con el servidor.");
@mysql_select_db("albunes",$conexion_ruta) or die("No se puede seleccionar BD");
$consulta_insertar = "INSERT INTO dir_imagenes (id, ruta_normal, username, ancho, alto, albun ) VALUES ('', '$ruta_ruta_1', '$usuario', '$ancho', '$alto', '".$album."' )";
@mysql_query($consulta_insertar,$conexion_ruta ) or die("No se pudo insertar los datos en la base de datos.");
}
?>
IMAGENES.PHP<?php
//Preguntamos si nuetro arreglo 'archivos' fue definido
if (isset ($HTTP_POST_FILES["archivos"])) {
//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
//obtenemos la cantidad de elementos que tiene el arreglo archivos
$tot = count($HTTP_POST_FILES["archivos"]["name"]);
//este for recorre el arreglo
for ($i = 0; $i < $tot; $i++){
/*con el indice $i, poemos obtener la propiedad que desemos de cada archivo
para trabajar con este datos del arhivo*/
//aqui el mensaje de erro
$mensaje_error="La extensión o el tamaño de los archivos no es correcta. $tipo_archivo <br><br><table><tr><td><li>Se permiten archivos .gif, .png o .jpg 1<br><li>se permiten archivos de 2 Mb máximo.</td></tr></table>";
$tmp_name = $HTTP_POST_FILES["archivos"]["tmp_name"][$i];
$tamano_archivo = $HTTP_POST_FILES["archivos"]['size'][$i];
$name = $HTTP_POST_FILES["archivos"]["name"][$i];
//aqui le damos un nombre nuevo al archivo
$nombre = rand (1000000000000,99999999999999);
//aqui le marcamos la extencion asi sea gif o png ya que al terminar el script seran jpg
$tipo = ".JPG";
//la carpeta donde guardara la imagen
$carpeta = "pequena";
//el nombre nuevo completo de la imagen
$nombreconpleto=$nombre.$tipo;
//la ruta donde se guardara el archivo
$ruta_completa = $carpeta.$nombreconpleto;
/* esto para determinar si realmente es un archivo jpg, gif o png ya que pueden enviar algun archivo con alguna de estas extenciones y si no se comprueba la funcion getimagesize podrian subirlo */
$tamanio = getimagesize($tmp_name);
if ($tamanio[2]==true){
switch ($tamanio[2])
{
/*############################# AQUI COMIENZA EL GIF #######################################*/
case 1: //aqui comprobamos si el archivo llego a los temporales si no damos el mensaje de error
if (is_uploaded_file($tmp_name))
{ //aqui comprobamos que el archivo no sea mayor de 2Mb aunque al redimencionar el archivo no sera mayor de 60 kb
//de ser mayor mandamos el mensaje de error
if ($tamano_archivo < 2048000)
{ //comoprobamos si el archivo se copio en la carpeta especificada de haberse copiado se ejecuta el rimencionar.php
// en el cual puedes hacer que en el proceso se guarde la url en la bbdd
//de no haberce copiado en la carpeta especifica mandamos el mensaje de error
if (copy($tmp_name,"$ruta_completa")){
include('redimencionar.php');
}else{
print "Error en transferencia de archivo.";
exit();
}
}else{
//este es el mensaje de error del if ($tamano_archivo < 2048000)
echo $mensaje_error;
}
}else{
//este es el mensaje de error del if (is_uploaded_file($tmp_name))
echo $mensaje_error;}
/*#################################### AQUI CIERRA EL GIF ##########################################*/
break;
/*#################################### AQUI COMIENZA EL JPG ##########################################*/
case 2:
//aqui comprobamos si el archivo llego a los temporales si no damos el mensaje de error
if (is_uploaded_file($tmp_name))
{ //aqui comprobamos que el archivo no sea mayor de 2Mb aunque al redimencionar el archivo no sera mayor de 60 kb
//de ser mayor mandamos el mensaje de error
if ($tamano_archivo < 2048000)
{ //comoprobamos si el archivo se copio en la carpeta especificada de haberse copiado se ejecuta el rimencionar.php
// en el cual puedes hacer que en el proceso se guarde la url en la bbdd
//de no haberce copiado en la carpeta especifica mandamos el mensaje de error
if (copy($tmp_name,"$ruta_completa")){
include('redimencionar.php');
}else{
print "Error en transferencia de archivo.";
exit();
}
}else{
//este es el mensaje de error del if ($tamano_archivo < 2048000)
echo $mensaje_error;
}
}else{
//este es el mensaje de error del if (is_uploaded_file($tmp_name))
echo $mensaje_error;}
/*#################################### AQUI CIERRA EL JPG ##########################################*/
break;
/*#################################### AQUI COMIENZA EL JPG ##########################################*/
case 3:
//aqui comprobamos si el archivo llego a los temporales si no damos el mensaje de error
if (is_uploaded_file($tmp_name))
{ //aqui comprobamos que el archivo no sea mayor de 2Mb aunque al redimencionar el archivo no sera mayor de 60 kb
//de ser mayor mandamos el mensaje de error
if ($tamano_archivo < 2048000)
{ //comoprobamos si el archivo se copio en la carpeta especificada de haberse copiado se ejecuta el rimencionar.php
// en el cual puedes hacer que en el proceso se guarde la url en la bbdd
//de no haberce copiado en la carpeta especifica mandamos el mensaje de error
if (copy($tmp_name,"$ruta_completa")){
include('redimencionar.php');
}else{
print "Error en transferencia de archivo.";
exit();
}
}else{
//este es el mensaje de error del if ($tamano_archivo < 2048000)
echo $mensaje_error;
}
}else{
//este es el mensaje de error del if (is_uploaded_file($tmp_name))
echo $mensaje_error;}
/*#################################### AQUI CIERRA EL JPG ##########################################*/
break;
/*#################### todos los demas es para cualquier otro tipo de archivos y de el mensaje de error indicando que no es un archivo no valido ####################*/
case 4:
echo $mensaje_error;
break;
case 5:
echo $mensaje_error;
break;
case 6:
echo $mensaje_error;
break;
case 7:
echo $mensaje_error;
break;
case 8:
echo $mensaje_error;
break;
case 9:
echo $mensaje_error;
}
}
echo("<b>Archivo </b> $key ");
echo("<br />");
echo("<b>imagen redimencionada normal:</b> \n");
echo("<br />");
//aqui cambia la url por la tuya
echo("<a href=\"http://".$_SERVER['HTTP_HOST']."/clasificados/$ruta_completa\">http://".$_SERVER['HTTP_HOST']."/clasificados/$ruta_completa</a>");
echo("<br />");
echo("<b>imagen enThumbs:</b> \n");
echo("<br />");
echo("<a href=\"http://".$_SERVER['HTTP_HOST']."/clasificados/imagenes_pequena.php?ruta=$ruta_completa\">http://".$_SERVER['HTTP_HOST']."/clasificados/imagenes_pequena.php?ruta=$ruta_completa</a>");
echo("<br />");
echo("<br />");
echo("<br />");
sleep(1);
}
}
?>
IMAGENES PEQUENAS.php<?php
header("Content-type: image/jpeg");
$archivo= $_GET['ruta'];
//aqui obtengo los datos de la imagen para hacer una comprobacion para ver el tamaño de la imagen ya que si es menor del tamaño permitido no ejecuto el script
$imagen= @imagecreatefromjpeg($archivo) or die ("<center><br /><br /><strong>la imagen esta dañada o <br />tiene un formato no valido</strong></center>");
//aqui saco el ancho
$ancho = @imagesx ($imagen);
// este es el tamaño marcado la imagen sera pefectamente cuadrada sin deformarla
$tamano = 100;
//aqui es donde verificamos si la imagen es mayor de serlo ejecutamos si no mostramos la imagen con el tamaño por defecto que deberia ser menor a 100 px
if($ancho > $tamano){
list($ancho, $alto) = @getimagesize($archivo);
if($ancho>$alto)
{
$new_alto = $tamano;
$new_ancho = ($ancho/$alto)*$new_alto;
$x = ($ancho-$alto)/2;
$y = 0;
}
else {
$new_ancho = $tamano;
$new_alto = ($alto/$ancho)*$new_ancho;
$y = ($alto-$ancho)/2;
$x = 0;
}
$origen = @imagecreatefromjpeg($archivo);
$temp = @imagecreatetruecolor($tamano, $tamano);
@imagecopyresampled($temp, $origen, 0, 0, $x, $y, $new_ancho, $new_alto, $ancho, $alto);
@imagejpeg($temp);
@imagedestroy($temp);
@imagedestroy($origen);
}else
{
@imagejpeg($imagen);
@imagedestroy($imagen);
}
?>