Bajar un archivo de una url con progreso

Iniciado por yalosabes, 14 Febrero 2006, 04:27 AM

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

yalosabes



DEjo un ejemplo que saquè de la pàgina de micro$oft de como descar un archivo de una url mediante el control Inet. Yo le agreguè una barra de progreso pero no usando el Progressbar , sino mediante 2 Shape.

Poner un command1 que comienza la descarga
Un Control Inet
2 Shapes, Shape1 y Shape2

Nota: El Shape1 se usa para mostar el contorno del total del progreso, y el shape2 es el que va aumentando, es decir el progreso.


Private Sub Command1_Click()
   
    Inet1.AccessType = icUseDefault
    Inet1.URL = "http://upx.sourceforge.net/download/upx124w.zip"
    Inet1.Execute , "GET" 'Indicamos que vamos a descargar o recuperar un _
    archivo desde una url
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
    Dim vtData As Variant 'acá almacenamos los datos
    Dim nomArchivo As String
    'extraemos de la ruta entera solo el nombre del archivo
    nomArchivo = Right(Inet1.URL, Len(Inet1.URL) - InStrRev(Inet1.URL, "/"))

    Select Case State
    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
         
     
        contenttype = Inet1.GetHeader("Content-type")
        'Creamos y abrimos un nuevo archivo en modo binario
        Open App.Path + "\" + nomArchivo For Binary 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
        End If
        Shape2.Width = 0
        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
             Shape2.Width = Shape2.Width + (Len(vtData) * 2) * Shape1.Width / filesize
             
             ' Leemos de pedazos de a 1 kb (1024 bytes)
             vtData = Inet1.GetChunk(1024, icByteArray)
             DoEvents

             If Len(vtData) = 0 Then
                  bDone = True
             End If
        Loop

        Close #1
   
   
    End Select

End Sub








Robokop

CitarYo le agreguè una barra de progreso pero no usando el Progressbar , sino mediante 2 Shape
tu se lo agregaste o MAS BIEN querras decir la copiaste de canal visual basic

yalosabes

copie el texto completamente de canal visual basic, sin embargo me parecio bueno ponerlo en este foro, porque podria ser de utilidad para alguien, o estoy ekivokado?

Kizar

Cuando pongas algun codigo o alguna cosa k no es tuya, pon siempre la fuente de la que proviene y el autor, por respeto al autor que se lo a currao y por si nos apetece leer todo el articulo.
Porque copiar y pegar lo sabemos hacer todos.

Salu2

Robokop

Cita de: yalosabes en 14 Febrero 2006, 04:58 AM
copie el texto completamente de canal visual basic, sin embargo me parecio bueno ponerlo en este foro, porque podria ser de utilidad para alguien, o estoy ekivokado?
Pues parecio que te quisieras ameritar los creditos porque primero lo dijiste que lo sacaste de una pagina de microsoft y despues k tu le agregaste los shapes