Foros del Web » Programando para Internet » PHP »

como monitorear descarga de archivo, como saber si la descarga fue exitosa

Estas en el tema de como monitorear descarga de archivo, como saber si la descarga fue exitosa en el foro de PHP en Foros del Web. Hola amigos del foro!! Tengo que hacer algo y no se como, se agradece mucho si alguien me orienta o ya tuvo un planteo parecido... ...
  #1 (permalink)  
Antiguo 13/08/2008, 16:56
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 20 años, 5 meses
Puntos: 0
como monitorear descarga de archivo, como saber si la descarga fue exitosa

Hola amigos del foro!!

Tengo que hacer algo y no se como, se agradece mucho si alguien me orienta o ya tuvo un planteo parecido...

El Planteo
El usuario que adquirió un archivo en el portal debe acceder a la zona de descargas (verificación de autenticación y permisos previo)..
Hasta alli todo bien, lo hago sin inconvenientes

Una vez en la zona de descargas, al usuario se le presentan los vínculos a los archivos que adquirió... clickea en uno y comienza la descarga..


El problema:
El tema es que el usuario solamente tiene que descargar el archivo una sola vez.. y no varias...

Estoy hablando de archivos de 200mb en promedio..

PREGUNTA:
- Desde PHP puedo monitorear la descarga y saber si el usuario la pudo llevar a cabo de manera exitosa?

- Existe algún método para monitorear la misma?


Bueno muchas gracias por la manitooo!
Saludos.
Nublar
  #2 (permalink)  
Antiguo 13/08/2008, 21:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

Hola nublar,

Lamentablemente no es posible hacer ese tipo de monitoreo, necesitas implementar otra cosa como un applet de Java que haga la descarga en vez del explorador.

Saludos.
  #3 (permalink)  
Antiguo 13/08/2008, 21:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

yo he visto que en sitios, como sourceforge.net, etc... ofrecen a la ves un hash MD5 para que manualmente el usuario compruebe la integridad del archivo descargado, ya que entiendo que... si se va la luz ¿como sabremos si lo bajo bien o mal???

como digo, GatorV ... o te haces algo mejor, o lo haces a la antigua... ofrece el MD5 del archivo antes de descargarlo... explicando como comprobarlo de nuevo y si es incorrecto... probablemente este mal descargado (o te estén timando)

bueno, eso lo decides tu... que la verdad, yo no sabría como hacerlo... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 14/08/2008, 06:13
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

Bueno, que lastima que no se pueda hacer nada desde el amado php.... muchas gracias por las respuestas!
  #5 (permalink)  
Antiguo 14/08/2008, 09:39
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

No se si esto te valdrá, pero hace tiempo yo tenía el mismo problema en un proyecto que estaba creando, al final este no siguio a delante. Pero tenia en mente un sistema para evitar el mismo problema que tienes tú, aunque nunca le implemente.
  1. Tenía una carpeta con todos los archivos a descargar. Para evitar que entraran en ella usaba el fichero .htaccess impidiendo el acceso a todos.

  2. Cuando el usuario se descargaba un fichero, lo que hacía era renombrarle para que el .htaccess no le protegiese y se pudiera acceder a el. El fichero que el usuario quería estaba comprimido y con una clave para evitar su descompresión.

  3. Cuando el usuario se descarga el fichero que quería le pedía que se descargase un programa gratuito de esos que te obtienen el MD5 hash y que obtuviera la cadena MD5 del archivo que se acababa de descargar.

  4. Por último le pedía que escribiera el hash anterior en un formulario de la página. Este formulario comprobaría que el hash coincida con el que archivo guardado en nuestro servidor, si es así se volvería a renombrar el fichero para que volviera a estar protegido por el .htaccess, después guardaria en una BD los datos del user indicando que se ha descargado el archivo y finalmente le mostraría la clave que le permitiría descomprimir el archivo.

Creo que todo lo que he dicho con PHP se podría, pero ya te digo: nunca llege a implementarlo.

Saludos
  #6 (permalink)  
Antiguo 14/08/2008, 13:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 64
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

Cita:
Iniciado por Tokkara Ver Mensaje
No se si esto te valdrá, pero hace tiempo yo tenía el mismo problema en un proyecto que estaba creando, al final este no siguio a delante. Pero tenia en mente un sistema para evitar el mismo problema que tienes tú, aunque nunca le implemente.
  1. Tenía una carpeta con todos los archivos a descargar. Para evitar que entraran en ella usaba el fichero .htaccess impidiendo el acceso a todos.

  2. Cuando el usuario se descargaba un fichero, lo que hacía era renombrarle para que el .htaccess no le protegiese y se pudiera acceder a el. El fichero que el usuario quería estaba comprimido y con una clave para evitar su descompresión.

  3. Cuando el usuario se descarga el fichero que quería le pedía que se descargase un programa gratuito de esos que te obtienen el MD5 hash y que obtuviera la cadena MD5 del archivo que se acababa de descargar.

  4. Por último le pedía que escribiera el hash anterior en un formulario de la página. Este formulario comprobaría que el hash coincida con el que archivo guardado en nuestro servidor, si es así se volvería a renombrar el fichero para que volviera a estar protegido por el .htaccess, después guardaria en una BD los datos del user indicando que se ha descargado el archivo y finalmente le mostraría la clave que le permitiría descomprimir el archivo.

Creo que todo lo que he dicho con PHP se podría, pero ya te digo: nunca llege a implementarlo.

Saludos
Hola, quisa el método más simple para lo que se plantea arriba sería la siguiente configuración en el archivo .htaccess de la carpeta donde guardas tus archivos

<Files *>
Order Deny, allow
Deny from all
Allow from localhost
</Files>

De esta forma sólo puedes acceder a los archivos desde tu sitio a través de un link, ya que el servidor bloqueará los intentos de enlace directo.

Con respecto a confirmar si la descarga terminó, he buscado bastante y no he podido encontrar la forma de hacerlo, asi que si alguien lo logra sería fantastico que lo comparta.
__________________
Damián
Diseño y desarrollo web
  #7 (permalink)  
Antiguo 15/08/2008, 08:20
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

Justamente el problema radica en saber si la descarga se efectuó correctamente, dado a que algunos usuarios son un poco problemáticos...
Gracias!
  #8 (permalink)  
Antiguo 19/08/2008, 01:51
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 1 mes
Puntos: 260
Mensaje Respuesta: como monitorear descarga de archivo, como saber si la descarga fue exitosa

Hola,

Muy interesante perspectiva de validación de descargas,
tal ves puedas implementar este algoritmo en una aplicación.

Escribes los HTTP headers adecuados Content-Type ... etc. (no confundir con HTML, por que no vas a generar HTML sino un octectstream/jpeg/png/flv/pdf/etc).
Abres el archivo en modo binario fopen() y transmites los bytes con fwrite() a php://output (o php://filter o con print()).
Al terminar de transmitir los bytes guardas el status de enviado (en una base de datos).
La proxima vez revisas si ya fué enviado antes de trasmitir nada.

Aunque no te asegura que los bytes hayan llegado a su destino, solamente que el servidor los envió (si el usuario cancela la descarga, PHP deja de transmitir y genera un error al no poder escribir en php://output y no llegaría al paso de guardar el status de enviado, inclusive podrías guardar la cantidad de bytes enviados hasta ese momento -- en php.net hay un ejemplo de como continuar las descargas fallidas -- con este método).

(Si no utilizas buffers ob_xxx, el proceso es light, solo trasmitir los bytes del archivo a la salida de php. Pero sí necesitas un buffer para leer fread() y escribir fwrite(), de 8 Kb o menos, como el socket está abierto manda de 8 en 8, y no hay problema con archivos de 200 Mb.)

Saludos,

ps:

Sí es posible descargar archivos con un applet en Java o un película en Flash, pero no obviar la seguridad (de otra forma cualquiera podría descargarte un virus por medio de Flash o Java, vas a necesitar un certificado digital).

No estoy diciendo que sea el mejor método, solamente que es el único que se me ocurren en PHP.
Ya lo probé .. pero que aburrido dártelo ya hecho no ?

Última edición por HackmanC; 19/08/2008 a las 02:48 Razón: buffers & cleanup & end.
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 04:49.