Script para mostrar foto recientemente subida

Iniciado por sReOn_1R, 25 Agosto 2010, 22:02 PM

0 Miembros y 1 Visitante están viendo este tema.

sReOn_1R

Hola estoy intentando hacer un registro en el que se necesita enviar un archivo (una foto) y que al cambiar el input file se muestra la imagen en un iframe...
para el formulario tengo algo como esto:
<form action="uploadphoto.php" target="iframe">
<input type='file' name='file' id='foto' onchange='javascript: submit();'/>
</form>
Pero bueno, lo que consigo es cambiar la foto y que se muestre,pero para esto lo que hago es guardarlo en el servidor y mostrar esa imagen. Hasta ahí lo tengo todo bien, pero quiero que si el usuario prefiere cambiar otra foto, guarde esa foto, borre la imagen anterior y se muestre esa foto.

uploadphoto.php:
Citar<?php
$tempdir = "temporary_photos/";
/*--------------------FUNCTIONS----------------------------------
-----------------------------------------------------------------*/
function imprimir_file() {
   //Comprobamos si se ha mandado un archivo es decir un tmp_name
   if (isset($_FILES['file']['tmp_name'])) {
         //Metemos toda la ruta del archivo en una variable,para cada vez que se realice este script comprobar si hay un archivo anterior,y si lo hay,lo borra.
      $GLOBALS['rutatempfile'] = $GLOBALS['tempdir'].$_FILES['file']['name'];
         //Si se ha mandado, lo movemos a una carpeta definida para fotos temporales
      if (move_uploaded_file($_FILES['file']['tmp_name'],$GLOBALS['rutatempfile'])) {
         //Ahora imprimimos toda esa ruta,es decir,imprimimos la imagen,en lo que será el iframe
         echo "<img src='".$GLOBALS['rutatempfile']."'>";
      } else {
         echo "Algun error ha ocurrido al mover el archivo";
         };
   }    else {
   echo "No has enviado ningun archivo";
   };
};
/*-------------------------END FUNCTIONS------------------------
----------------------------------------------------------------*/
//Si no existe esa variable,no tiene una imagen que tiene que borrar
if ($rutatempfile) {
      //Parece que se ha quedado una imagen temporal,tiene que ser borrada.
      echo "Se va a borrar el archivo: <br><img src='".$rutatempfile."'>";
      if (unlink($rutatempfile)) {
      echo "Se ha borrado el anterior";
      } else {
      echo "No se ha podido borrar por algo";
      };
   } else {
   //Llamamos a la funcion para imprimir la variable file
   imprimir_file();
    echo $rutatempfile; //Se consigue mostrar la ruta de la imagen por lo que la variable es global
};
?>
$rutatempfile lo utilizo para cuando inicie el script poder saber si ya se ha subido una foto anteriormente y borrarla..
bueno me imagino que viendo el script y con la explicacion ha quedado claro espero que me podais ayudar..Gracias!





sReOn_1r

sReOn_1R

Bueno según estoy pensando puede que ser que no guarde las variables de una ejecución del script a otra,¿no? es lo unico que se me ocurre asi que para no colapsar el servidor con fotos temporales,sería hacer un cron para que cada cierto tiempo,borre los archivos...
¿Estoy en lo cierto? :-/





sReOn_1r

Mr. Crowley

Si los archivos tienen el mismo nombre entonces, generalmente, le va a cargar el primero que subio. Se guarda en la cache del navegador. Ya me ha pasado y es un dolor de bolas.
Mi blog personal: www.calirojas.com

neopuerta360

Estas usando un registro y reconocimiento de usuarios por que yo tengo un codigo para esso que no usa base de datos sql.