Archivo temporal en PHP

Kaos

Buenas, la duda de hoy trae migas.

Estoy haciendo un gestor de descargas en PHP, mediante el que un usuario puede bajar un archivo.

Bien, la dificultad radica en lo siguiente. Existe un archivo en el ftp, pongamos "directorio_pruebas/archivo.rar". Ese archivo podrá ser descargado por el usuario, pero una vez descargado el archivo se cambiará de nombre, por lo q el usuario no podrá volver a descargarlo ni conocerá su nueva localización para hacerlo.

¿Tenéis alguna idea?

Yo intenté a poner el boton lincando al archivo, luego renombrarlo. Pero claro, al renombrarlo el botón no da una ruta correcta pq el archivo anterior ya no existe. Creo q la solución está en los archivos temporales, pero tampoco se muy bien como enfocarlo.

LOc0

Bien, la dificultad radica en lo siguiente. Existe un archivo en el ftp, pongamos "directorio_pruebas/archivo.rar". Ese archivo podrá ser descargado por el usuario, pero una vez descargado el archivo se cambiará de nombre, por lo q el usuario no podrá volver a descargarlo ni conocerá su nueva localización para hacerlo.

¿Por qué se da ese cambio de nombre? Es que no entiendo bien qué quieres hacer...

Salu2 ;)

ethernal-

Desconozco si con PHP se puede hacer o no, pero con ejecutar un comando del sistema operativo del servidor estaria bastante facil no?

rename archivo_antiguo archivo_final

Quizas ayudandote de otro lenguaje?

Igneus

creo que la pregunta es, el ftp es tuyo? o pretendes hacer algo tipo dowint?

radykal

A ver, si hasta ahora al descargar el archivo se renombra y el problema que tienes es que el boton de descargar pasa a tener un vinculo no valido, haz que el vinculo de ese boton se obtenga de una base de datos, y al cambiar el nombre al archivo actualizas en la base de datos con el nuevo nombre, de forma que el siguiente que cargue la página obtendrá el nuevo valor del vinculo de la base de datos...
No sé si me he expresado bien o no se entiende na.. :(

erdanblo

No sé que dificultad tiene la verdad, xd, yo creo que jugando un poco con los Headers se hace fácil.

En vez de pasarle la ruta directa al archivo (www.dominio.com/ftp/archivo.rar) pásale, www.dominio.com/descarga.php?id=3

Controla todo por MySQL (como dice el de arriba mía) y ya esta. Haciendolo bien, cuando el archivo este en el gestor de descargas cuando haga clic en propiedades para ver de donde se baja, solo verá www.dominio.com/descarga.php?id=3 y no la ruta absoluta al archivo.

cabron

Yo tuve que hacer algo parecido (ocultar el link de descarga directa) para una Web, e hice lo que cuenta #6.

Ofrecía un link tipo descarga.php?archivo='loquesea', y enviaba el archivo cambiando los headers.

No es necesario tener un archivo temporal, con que pongas tus archivos en un directorio que no está accesible desde fuera, pero si desde tus scripts php, te vale.

EnZo

$filename='test.pdf';
$len = filesize($filename);
header('Content-type: application/pdf');
header('Content-Length: $len');
header('Content-Disposition: inline; filename="test.pdf"');
readfile($filename);

eso es un ejemplo sacado de php.net que te debe valer aplicandolo con lo que te ha dicho erdanblo.

TeKaNeO

Mmmm me pone de muy mala lexe eso que intentas hacer cuando me salta la protección de user/pass de una web de la cual estoy intentando bajar un fichero xD

"Remote file changed" ¬¬ xD

Nemox

eso te pasa por querer bajar ponno xDDD

Usuarios habituales

  • Nemox
  • EnZo
  • cabron
  • erdanblo
  • radykal
  • ethernal-
  • Kaos