Foros del Web » Programando para Internet » PHP »

eliminar temporales

Estas en el tema de eliminar temporales en el foro de PHP en Foros del Web. hola gente. tengo este escript Código PHP: ///form.php echo '<center>'; echo '<br>'; echo '<table>'; echo'<form enctype="multipart/form-data" action="guardararchivo.php" method="post">'; echo '<tr><td align=center colspan=3><font size=1>Foto</font></td></tr>'; echo '<tr><td colspan=2><input class=texto type="file" name="foto"></td><td></td><td></td><td></td></tr>'; echo '<tr><td align=center><font size=1>Thum.</font></td></tr><tr><td><input class=texto type="file" name="thumbail"></td><td></td></tr>'; echo '<tr><td></td></tr><tr><td align=center><br><input class=boton type="submit"value="Enviar archivo"></td></tr><tr><td><br></td></tr>'; echo '</form>'; echo '</table>'; echo '<br><br>'; echo '<A class=enlace HREF=descargar_archivo2.php border=0>ver album</A>';  echo '</table>'; ?> ////guardararchivo.php <?php require ( ...
  #1 (permalink)  
Antiguo 13/05/2004, 02:56
 
Fecha de Ingreso: mayo-2004
Ubicación: españa
Mensajes: 45
Antigüedad: 13 años, 7 meses
Puntos: 0
eliminar temporales

hola gente.
tengo este escript
Código PHP:
///form.php

echo '<center>';
echo '<br>';
echo '<table>';
echo'<form enctype="multipart/form-data" action="guardararchivo.php" method="post">';
echo '<tr><td align=center colspan=3><font size=1>Foto</font></td></tr>';
echo '<tr><td colspan=2><input class=texto type="file" name="foto"></td><td></td><td></td><td></td></tr>';
echo '<tr><td align=center><font size=1>Thum.</font></td></tr><tr><td><input class=texto type="file" name="thumbail"></td><td></td></tr>';
echo '<tr><td></td></tr><tr><td align=center><br><input class=boton type="submit"value="Enviar archivo"></td></tr><tr><td><br></td></tr>';
echo '</form>';
echo '</table>';
echo '<br><br>';
echo '<A class=enlace HREF=descargar_archivo2.php border=0>ver album</A>'; 
echo '</table>';
?>

////guardararchivo.php

<?php
require ("datos.php");
echo 
'<center><font size=1>';
$conexion[email protected]mysql_connect($servidor,$nombre,$clave);
$res=mysql_select_db("fotos",$conexion);
if ( 
$conexion )
{
    
    
$archivo $_FILES["foto"]["tmp_name"]; 
     
$tamanio $_FILES["foto"]["size"];
     
$tipo    $_FILES["foto"]["type"];
     
$nombre  $_FILES["foto"]["name"];     
     
$archivo_thumb $_FILES["thumbail"]["tmp_name"]; 
     
$tamanio_thumb $_FILES["thumbail"]["size"];
     
$tipo_thumb    $_FILES["thumbail"]["type"];
     
$nombre_thumb  $_FILES["thumbail"]["name"];
     if ( 
$archivo != "none" && $archivo_thumb!="none")
     {
         
$ruta=basename(tempnam(getcwd(),'tmp')).'.jpg';
         
$fp fopen($archivo"rb");
            
$ruta2=$ruta.'.gz';
            
$camikaze=gzopen($ruta2,"wb5");
            
gzwrite($camikaze,fread($fp,$tamanio));
            
gzclose($camikaze);
            
$final=fopen($ruta2,"rb");
            
$insertar=fread($final,filesize($ruta2));
            
$insertar=addslashes($insertar);
            
fclose($final);
            
//
            
$ruta_thumb=basename(tempnam(getcwd(),'tmp')).'.jpg';
         
$fp_thumb fopen($archivo_thumb"rb");
            
$ruta2_thumb=$ruta_thumb.'.gz';
            
$camikaze_thumb=gzopen($ruta2_thumb,"wb5");
            
gzwrite($camikaze_thumb,fread($fp_thumb,$tamanio_thumb));
            
gzclose($camikaze_thumb);
            
$final_thumb=fopen($ruta2_thumb,"rb");
            
$insertar_thumb=fread($final_thumb,filesize($ruta2_thumb));
            
$insertar_thumb=addslashes($insertar_thumb);
            
fclose($final_thumb);
            
$query "INSERT INTO fotos.foto_foto VALUES(null,'".$insertar."','".$insertar_thumb."')";
            
mysql_query($query);
            if(
mysql_affected_rows($conexion) > 0)print "Se ha guardado el archivo en la base de datos.";
            else print 
"NO se ha podido guardar el archivo en la base de datos.";
     }
     else print 
"No se ha podido subir el archivo al servidor";
}else{
    echo 
'No conectado';
}
echo 
"<HTML><SCRIPT>document.location='form.php';</SCRIPT></HTML>"
?>

///decargar archivo.php

<?php 
require ("datos.php");
$conexion[email protected]mysql_connect($servidor,$nombre,$clave);
$res=mysql_select_db("fotos",$conexion);
    
$qry "SELECT idfoto,foto_pequena FROM fotos.foto_foto";
$res2 mysql_query($qry);
for (
$j=0;$j mysql_num_rows($res2);$j++)
for (
$i=0;$i mysql_num_fields($res2);$i++)
{    
    if (
$i==1)
    {
        
$foto=basename(tempnam(getcwd(),'tmp'));
        
$foto.=".jpg.gz";
        
$foto2=basename(tempnam(getcwd(),'tmp'));
        
$foto2.=".jpg";
        
$contenido2=mysql_result($res2,$j,$i);    
        
$ft=fopen($foto,"wb"); 
        
gzwrite($ft,$contenido2);
        
fclose($ft);
        
$abrir=gzopen($foto,"rb");
        
$mio=gzread($abrir,1024*512);
        
$final=fopen($foto2,"wb");
        
fwrite($final,$mio);
        
fclose($final);
        
gzclose($abrir);
        echo 
'<a href=fotogrande.php?idfoto='.mysql_result($res2,$j,0).' target=_new><img src='.$foto2.' >&nbsp;&nbsp;&nbsp;';
        echo 
'';    
    }
}
echo 
'<br><br><font size=1><center><a href=form.php>Insertar nuevas fotos</a>';
?>


///fotogrande.php

<?php 
require("datos.php");
$conexion[email protected]mysql_connect($servidor,$nombre,$clave);
$res=mysql_select_db("fotos",$conexion);    
$qry "SELECT foto_grande FROM fotos.foto_foto where idfoto='".$_GET["idfoto"]."'";
$res2 mysql_query($qry);
$foto=basename(tempnam(getcwd(),'tmp'));
$foto.=".jpg.gz";
$contenido2=mysql_result($res2,0,0);    
$ft=fopen($foto,"wb"); 
gzwrite($ft,$contenido2);
fclose($ft);
$final=readgzfile($foto);
echo 
'<center><img src='.$final.'>&nbsp;&nbsp;&nbsp;<br><br>';
echo 
'<font size=1><a href=descargar_archivo2.php>Volver al album</a>';
?>
el problema es que no puedo hacer un unlink() con los temporales, porque entonces no me muestra nada, alguien sabe como elimminarlos del servidor despues de ser visto?

gracias
__________________
a por todassss
  #2 (permalink)  
Antiguo 13/05/2004, 08:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
* Por qué dices que no puedes hacer un unlink() ? .. algún problema concreto (error de PHP?) ..

* Donde pretendes aplicar tu unlink()

* Y .. por qué creas archivos en el disco para tus thumbnails si luego no los usas y necesitas borrarlos?

Podrías "entregarlos" directamente con cabeceras HTTP tipo:

header ("Conten-Type: image/jpeg")

Pero .. al "parecer" en tu BD te guardas la ruta de tu thumbnail que generas cuando subes un archivo ... Una forma de "optimizar" el tiempo de proceso a la hora de presentar tus imagenes .. Pero, ese proceso podrías hacerlo en "tiempo" real lo cual te ahorraría "espacio" en tu HD de tu servidor a costa de mayor tiempo de proceso a la hora de presentar esos thumbnails.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 14/05/2004, 02:43
 
Fecha de Ingreso: mayo-2004
Ubicación: españa
Mensajes: 45
Antigüedad: 13 años, 7 meses
Puntos: 0
hola cluster
los temporales para los thumbails los creo porque los necesito para comprimir lafoto
No puedo usar temporales, trabajo en una empresa en la que esta prohibido porque el mozilla no funciona igual q explorer,
Pretendo hacer unlink justo despues de crearlos y mostrarlos por pantalla, pero si lo hago desaparecen de la pantalla.

De todas maneras se que esta no es la manera mas correcta de realizarlo pero son ordenes, asi q....

GRACIAS cluster
__________________
a por todassss
  #4 (permalink)  
Antiguo 14/05/2004, 03:27
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

No puedes unlinkarlo en el mismo script que lo creas porque el PHP se ejecuta antes de enviar el HTML, asi que lo has borrado antes de que se muestre el HTML en el navegador.

Una solucion seria crear una funcion de "recoleccion de basura" (Garbage collection), que ejecutaras en todas las paginas que comprobase si existe algun temporal que borrar (mirando la antiguedad del fichero y eliminandolo si han pasado x minutos).

Otra opcion seria si tienes control sobre la configuracion del servidor web que lo configurases para "engañar" al navegador y que al poner "/imagen/123.jpg" se llame a un script que genere dinamicamente la imagen como comenta Cluster. Con las cabeceras correctas y ese "engaño" con el nombre, creo que funcionaria en todos los navegadores.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 05:36.