Class de téléchargement http avec gestion de resume, gestion de proxy, info de progression et debit moyen.


Description

Une petite classe de téléchargement de fichier avec gestion de progression, resume, et proxy.
J'ai deja posté un code pour télécharger un fichier via vb.net mais il ne permettait
ni le resume, ni de connaitre l'avancement du download.
Celui ci donc, permet de reprendre un téléchargement mis en pause ou arreté par erreur (Resume) et de connaitre l'avancement du téléchargement via une progressbar, un pourcentage, etc (voir zip exemple)

Source / Exemple :


Imports System.Net

Public Class HBDownloader

    Public Event start_dl(ByVal totalfilelen As Integer, ByVal resumepos As Integer, ByVal timestart As Integer)
    Public Event progress(ByVal actual_pos As Integer)
    Public Event end_dl(ByVal actual_pos As Integer)

    Dim b As Boolean
    Dim bresume As Boolean
    Dim readstr As IO.Stream
    Dim lenfile As Long
    Dim bytesarr(102400) As Byte
    Dim timestart As Integer
    Dim tmppos As Integer
    Dim posresume As Integer
    Dim pathname As String
    Dim urlz As String

    Sub start(ByVal pathstr As String, ByVal strurl As String, ByVal isresume As Boolean)
        b = True
        bresume = isresume
        timestart = 0
        pathname = pathstr
        urlz = strurl
        Dim threadz As New System.Threading.Thread(AddressOf thread_launch)
        threadz.Start()
    End Sub

    Sub thread_launch()
        Get_file(urlz, pathname)
    End Sub

    Sub stop_dl()
        b = False
    End Sub

    Sub Get_file(ByVal fileurl As String, ByVal filepath As String, Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing)
        If proxy <> Nothing And proxyport <> Nothing Then
            Dim hproxy As WebProxy
            hproxy = New WebProxy(proxy, proxyport)
            GlobalProxySelection.Select = hproxy
        End If
        Dim hwebrequest As System.Net.HttpWebRequest = System.Net.WebRequest.Create(fileurl)
        If bresume = True Then
            posresume = FileLen(filepath)
            tmppos = posresume
            hwebrequest.AddRange(CInt(tmppos))
        End If
        Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse
        readstr = hwebresponse.GetResponseStream
        lenfile = hwebresponse.ContentLength + tmppos
        timestart = Environment.TickCount
        Dim tmplen As Integer
        tmplen = 2
        b = True
        RaiseEvent start_dl(lenfile, posresume, timestart)
        Do While tmplen > 0
            If b = False Then Exit Do
            tmplen = readstr.Read(bytesarr, 0, 102400)
            tmppos += tmplen
            Dim filesave As New IO.FileStream(filepath, IO.FileMode.Append, IO.FileAccess.Write)
            filesave.Write(bytesarr, 0, tmplen)
            filesave.Close()
            RaiseEvent progress(tmppos)
            System.Threading.Thread.Sleep(1)
        Loop
        RaiseEvent end_dl(tmppos)
        readstr.Close()
    End Sub

End Class

Conclusion :


Commentaires pliz!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.