Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP elimina los ficheros antes de descargarlos

Estas en el tema de PHP elimina los ficheros antes de descargarlos en el foro de PHP en Foros del Web. Hola muy buenas, Esta es mi primera consulta en este foro aunque he entrado muchas veces a consultar info. Esta vez necesito ayuda, ya que ...
  #1 (permalink)  
Antiguo 06/04/2016, 01:23
 
Fecha de Ingreso: abril-2016
Mensajes: 13
Antigüedad: 3 años, 9 meses
Puntos: 0
PHP elimina los ficheros antes de descargarlos

Hola muy buenas,

Esta es mi primera consulta en este foro aunque he entrado muchas veces a consultar info.

Esta vez necesito ayuda, ya que no encuentro la solución.

He creado un generador automático de firmas para la empresa donde trabajo: rellenas una serie de campos y genera una imagen con todos ellos y una imagen corporativa de fondo.

El caso es, que para hacer un poco de "auto-mantenimiento", cuando se pulsa sobre el enlace de descarga, se eliminan los ficheros que se han generado.

Cuando se pulsa el enlace se ejecuta este código:

Código:
<?php
	//Eliminamos las imágenes, los html y el .ZIP una vez descargados los archivos
	
	//Capturamos el ID de los ficheros
	$skey = $_POST['id'];
	
	$newFile = "firmaCorporativaNuevos-".$skey.".jpg";
	$newFileHTML = "firmaCorporativaNuevos-".$skey.".html";
	$replyFile = "firmaCorporativaRespondidos-".$skey.".jpg";
	$replyFileHTML = "firmaCorporativaRespondidos-".$skey.".html";
	$zipFile = 	"firmaCorporativa-".$skey.".zip";
	
	//Le damos permisos para poder eliminar los ficheros
	chmod($newFile,0777);
	chmod($newFileHTML,0777);
	chmod($replyFile,0777);
	chmod($replyFileHTML,0777);
	chmod($zipFile,0777);
	
	//Creamos 3 segundo de espera, para poder descargar la imagen antes de que sea borrada
	stream_set_timeout(3);
	sleep (3); //añadí el sleep porque el stream_set_timeout, me funcionaba en local, pero no en el server linux.
	
	//Eliminamos los ficheros
	unlink($newFile);
	unlink($newFileHTML);
	unlink($replyFile);
	unlink($replyFileHTML);
	unlink($zipFile);
?>
Muchas gracias a [email protected] de antemano.

PD: Si me he equivocado en algo a la hora de postear, avisadme por favor. Gracias!
  #2 (permalink)  
Antiguo 06/04/2016, 05:46
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 9 años, 3 meses
Puntos: 123
Respuesta: PHP elimina los ficheros antes de descargarlos

No he entendido muy bien cual es el problema, podrias ser un poco mas descriptivo encuanto al error?
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 06/04/2016, 15:04
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 6 años, 7 meses
Puntos: 25
Respuesta: PHP elimina los ficheros antes de descargarlos

NO se si entendi bien.
Eso que haces no es un metodo seguro...
¿Quién te garantiza que el archivo se ha terminado de descargar en menos de 3s?
El tiempo de descarga depende de muchos factores.

Deberia ser con javascript quien detecte que el usuario ha descargado el fichero, mediante AJAX y le mande al servidor la señal de que se descargo para que lo borre.

Pero si te digo la verdad, nunca tuve que hacer nada parecido, pero buscando encontre esto:
http://stackoverflow.com/questions/1...-file-download

http://gruffcode.com/2010/10/28/dete...n-the-browser/

Espero que te sirva.
  #4 (permalink)  
Antiguo 07/04/2016, 06:43
 
Fecha de Ingreso: abril-2016
Mensajes: 13
Antigüedad: 3 años, 9 meses
Puntos: 0
Respuesta: PHP elimina los ficheros antes de descargarlos

Gracias a ambos, al final investigando y probando era un problema de permisos.

En principio puse 3 segundos, porque el fichero ocupa unos 200Kb, más de 3 segundos me parecería una barbaridad jeje

Por si a alguien le ocurriese explico un poco más. La cuestión es que cuando haces click en el enlace de descarga, se ejecuta mediante ajax ese código PHP que puse (en otro fichero), que sirve para eliminar los ficheros generados una vez pasen 3 segundos.

La función de eliminar la puse porque se iban a generar muchísimas firmas y para no tener que estar borrando a diario toda esa info. Al final he optado por añadir una tarea programada al server de linux que elimine cada día las firmas generadas, porque no deben estar en el servidor.

Muchas gracias!
  #5 (permalink)  
Antiguo 07/04/2016, 11:55
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 6 años, 7 meses
Puntos: 25
Respuesta: PHP elimina los ficheros antes de descargarlos

Me alegro que lo hayas solucionado.

Y creo que optar por una tarea programada diaria (cron) para la limpieza es lo más seguro que puedes hacer para este caso.

Saludos.

Etiquetas: ficheros, html
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:58.