Autor
|
Tema: ¿Bajar archivo y saber cuando terminó? (Leído 4,649 veces)
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
Nada, bajando el archivo no tengo problemas, estoy usando un timer con un tiempo exagerado "por las dudas" pero me gustaría encontrar la forma de saber apenas el archivo terminó de bajarse y si terminó de bajarse entero o se cortó en el camino...
Por ejemplo, para saber cuando terminó de bajarse también puedo usar un timer que lea el tamaño del archivo y cuando el archivo durante X cantidad de segundos no varía de tamaño debería haber concluido la descarga, pero no tengo manera de saber si se cortó la descarga o si llegó entero el archivo.
Otra posibilidad que me planteo es conectar por FTP al hosting donde está el archivo a bajar, leer el tamaño del archivo antes de descargarlo y compararlo con el archivo bajado, cuando el archivo bajado llega al mismo peso obviamente terminó de bajar y si no llega pasados X segundos es porque no logró descargar correctamente y lo intentaría de nuevo hasta lograrlo con éxito.
¿Hay alguna manera "fácil" de hacer esto? ¿o tengo que hacerlo engorroso?
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Como bajas actualmente el archivo?...
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
Tengo varios codes para el download que usé antes en otros programas, no sería problema utilizar otro code. Actualmente tengo ganas de usar este código de Alberto Falossi que encontré aca: http://www.devx.com/vb2themax/Tip/19203Tiene un reporte de errores, pero no me queda claro que pasaría si el archivo no logra descargarse. También veo que no hay end if por ningún lado pero funciona igual... ¿me explican porqué no son necesarios los end if en este caso?
|
|
« Última modificación: 29 Enero 2012, 23:38 pm por extreme69 »
|
En línea
|
|
|
|
STARZ
Desconectado
Mensajes: 34
|
Hola, te respondo a lo de "End If" Cuando usas if then etc no es necesario ponerle el end if siempre y cuando mantengas toda la estuctura del IF en la misma línea; también puedes agegar dos puntos para seguir agregando concluciones. ej iguales: Dim a As String a = "Rojo" if a = "Rojo" then msgbox "SI, A es rojo" msgbox "ROJO" else msgbox "NO, A no es Rojo" end if
Dim a As String a = "Rojo" if a = "Rojo" then msgbox "SI, A es rojo" : msgbox "ROJO" else msgbox "NO, A no es Rojo"
|
|
« Última modificación: 29 Enero 2012, 23:57 pm por STARZ »
|
En línea
|
|
|
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
Gracias STARZ, yo siempre lo hice en varias lineas, parece más prolijo.
¿Me ayudan con lo de saber cuando terminó de descargarse el archivo y si se descargó correctamente?
Sino lo voy a tener que hacer por FTP midiendo los tamaños, pero FTP no es tan estable como HTTP... me va a empezar a tirar errores de sockets, o connection failed, o timeout, etc...
|
|
« Última modificación: 30 Enero 2012, 00:05 am por extreme69 »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Gracias STARZ, yo siempre lo hice en varias lineas, parece más prolijo.
¿Me ayudan con lo de saber cuando terminó de descargarse el archivo y si se descargó correctamente?
Sino lo voy a tener que hacer por FTP midiendo los tamaños, pero FTP no es tan estable como HTTP... me va a empezar a tirar errores de sockets, o connection failed, o timeout, etc...
Yo por lo menos necesito saber como rayos descargas actualmente el archivo, si usas WININET como el codigo de la liga que pusiste de "Alberto Falossi" pues simplemente tienes que comparar segun la MSDN dice si es que falla http://msdn.microsoft.com/en-us/library/windows/desktop/aa385096%28v=vs.85%29.aspxReturn value
Returns a valid handle that the application passes to subsequent WinINet functions. If InternetOpen fails, it returns NULL. To retrieve a specific error message, call GetLastError.
Para mas info(Se lista TODO lo referente con la WININET): http://msdn.microsoft.com/en-us/library/windows/desktop/aa385483%28v=vs.85%29.aspx Nota: Lo del if then es mejor usar solo 1 sentencia (sin los ":" ya que no es nada prolijo). Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Perdon por el doble post... acabo de leer algo que seguro te interesara... HttpQueryInfo functionun ejemplo (si no sabes C/C++ donde veas "&dwNombre" debes usar varptr(dwNombre), donde veas new char debes usar redim). Retrieving HTTP Headers Con esa api puedes saber cuanta información esperas recibir (array de tipo byte no string...), con conjunto con la funcion de la liga aquella puedes verificar el peso del archivo descargado con el peso orifinal (No usaras un buffer de bytes). Dulces Lunas!¡.
|
|
« Última modificación: 30 Enero 2012, 00:29 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
BlackZeroX,
Todos los códigos de ejemplo son C++ o al menos no son VB6, entiendo poco y/o nada que hace el code.
|
|
|
En línea
|
|
|
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
Listo!
Lo solucioné mudandome a VB.NET y usando una progress bar.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Bajar un archivo de una url con progreso
Programación Visual Basic
|
yalosabes
|
4
|
2,358
|
15 Febrero 2006, 02:55 am
por Robokop
|
|
|
Como saber cuando un archivo esta en ejecucion
Programación Visual Basic
|
Hendrix
|
1
|
1,736
|
16 Marzo 2006, 00:20 am
por NYlOn
|
|
|
[Help] Saber cuando se refresca un control
Programación Visual Basic
|
Psyke1
|
2
|
2,366
|
13 Marzo 2011, 11:03 am
por Psyke1
|
|
|
Cuando creeis que volveran a bajar de precio los discos duros????????
Hardware
|
beholdthe
|
3
|
5,809
|
27 Diciembre 2011, 20:51 pm
por beholdthe
|
|
|
Bajar archivo de File2share
Hacking
|
101010
|
4
|
9,283
|
18 Junio 2023, 16:58 pm
por 101010
|
|