Ayuda con un Downloader...

Iniciado por sp26, 9 Enero 2007, 21:30 PM

0 Miembros y 1 Visitante están viendo este tema.

sp26

Hola a todos...

Estoy haciendo un downloader y necesito saber de que manera puedo medir los Kb/s (Velocidad de descarga) va el archivo... Osea, si estoy descargando un archivo de 1 MB, mi idea es que marque a la velocidad que va (Por ejemplo, 100 Kb/s y faltan x:xx:xx (Tiempo))

Tambien quisiera saber si hay alguna forma de crear archivos .EXE, busque en esta sección sobre como crearlos, pero al final no lo encontre...

Agradeceria su ayuda :P, ya que esto es para un proyecto en mi instituto.... asias...

CeLaYa

mira esta es parte de un código que hice para descargar archivos de un ftp, aqui voy mostrando el avance de descarga que lleva el archivo, se me ocurre que si yo llevo la cuenta de bytes descargados con "Len(vtData)" tal vez puedas sacar cuantos bytes se descargan por segunto, y por consiguiente cual sería el tiempo restante de la descarga.



Private Sub Inet1_StateChanged(ByVal State As Integer)
    Dim vtData As Variant 'acá almacenamos los datos
    Dim prog As Double, filesize As Long, contenttype As String
   
    On Local Error GoTo linea1
    Select Case State
        Case icError ' 11
              ' En caso de error, devuelve ResponseCode y ResponseInfo.
            vtData = Inet1.ResponseCode & ":" & Inet1.ResponseInfo
        Case icResponseCompleted
            Dim bDone As Boolean: bDone = False
            Dim tempArray() As Byte ' Un array para grabar los datos en un archivo
            'Para saber el tamaño del fichero en bytes
            filesize = Inet1.GetHeader("Content-length")
            'Establecemos el Max del = a al tamaño del archivo
            ProgressBar1.Max = filesize
            contenttype = Inet1.GetHeader("Content-type")
            'Creamos y abrimos un nuevo archivo en modo binario
            Open App.Path & "\" & nArchivo For Binary Access Write As #1

            ' Leemos de a 1 Kbytes. El segundo parámetro indica  el tipo de fichero. Tipo texto o tipo Binario, en este caso _
            binario
            vtData = Inet1.GetChunk(1024, icByteArray)

            DoEvents
            'Si el tamaño del fichero es 0 ponemos bDone en True para que no entre en el bucle
            If Len(vtData) = 0 Then bDone = True

            Do While Not bDone
                'Almacenamos en un array el contenido del archivo
                tempArray = vtData
                'Escribimos el archivo en disco
                Put #1, , tempArray
                'Aumentamos la barra
                ProgressBar1.Value = ProgressBar1.Value + Len(vtData) * 2
                prog = (ProgressBar1.Value + Len(vtData) * 2) / 1000000
                lblDescarga.Caption = "Descargando: " & Format(prog, "0.00") & "MB de " & Format(filesize / 1000000, "0.00") & "MB"
                               
                ' Leemos de pedazos de a 1 kb (1024 bytes)
                vtData = Inet1.GetChunk(1024, icByteArray)
                DoEvents
                If Len(vtData) = 0 Then bDone = True
            Loop
            completo = bDone
            Close #1
            ProgressBar1.Value = 0
    End Select
    Exit Sub
linea1:
    MsgBox "Error al conectarse al servidor" & vbCrLf & vbCrLf & Err.Number & vbCrLf & Err.Description, vbInformation + vbOKOnly, App.EXEName
    completo = True
    On Local Error GoTo 0

End Sub

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

sp26

Entendi todo (O la mayoria de tu codigo), pero, exactamente donde indico que archivo va a bajar?

NYlOn

Eso es el evento del control Inet. Lo que tenes que hacer es poner ese codigo y despues con el control bajar el archivo normalmente.

PD: Acordate de crear los controles que te pide como lblDescarga, etc.

CeLaYa

Cita de: sp26 en 10 Enero 2007, 04:37 AM
Entendi todo (O la mayoria de tu codigo), pero, exactamente donde indico que archivo va a bajar?

eso lo haces asi

private sub descargar
With Inet1
        'ProgressBar1.Value = 0
        .AccessType = icUseDefault
        .UserName = "usuario"
        .Password = "pass"
        nArchivo = "archivo.xxx"
        .URL = "http://www.servidor.com/Carpeta/" & nArchivo
        .Execute , "GET" 'Indicamos que vamos a descargar o recuperar un archivo desde una url
    End With
end sub
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

sp26

Ya lo probe, pero al final no descargo el archivo...  :huh: