Savoir la taille d'un fichier qui est sur internet

petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 - 20 août 2012 à 19:49
 Utilisateur anonyme - 20 août 2012 à 21:25
Bonjour ,
j'utilise ce bout de code que j'ai trouvé ici sur Codes-sources ,
Sub DOWNLOAD(URL As String, SaveAs As String)

    Dim hOpen                As Long
    Dim hOpenUrl            As Long
    Dim bDoLoop          As Boolean
    Dim bRet                As Boolean
    Dim sReadBuffer      As String * 2048
    Dim lNumberOfBytesRead  As Long
    Dim sBuffer          As String
DoEvents
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    hOpenUrl = InternetOpenUrl(hOpen, URL, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)

    bDoLoop = True
    While bDoLoop
        sReadBuffer = vbNullString
        bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
      
        sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
        
        If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
 
    Wend
    'MsgBox (Len(sBuffer))
    Open SaveAs For Binary Access Write As #1
    Put #1, , sBuffer
    Close #1
    
    If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
    If hOpen <> 0 Then InternetCloseHandle (hOpen)
End Sub

je sait avoir la taille du fichier avec sbuffer mais uniquement a la fin du telechargement , donc pour faire une bare de progression je voudrais la taille total avant le telechargement

Merci

2 réponses

Utilisateur anonyme
20 août 2012 à 21:22
Bonsoir,

Tu peux utiliser HttpWebRequest et lire l'information dans le header.

        Dim webrequest As HttpWebRequest = HttpWebRequest.Create("http://....addresse_du_fichier")
        With webrequest
            .Method = "GET"
            .UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9) Gecko/2008052906 Firefox/3.0"
            .ContentType = "text/xml; charset=utf-8"
            .Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            .AllowAutoRedirect = True
            .Pipelined = False
            .KeepAlive = True
            .ProtocolVersion = New Version(1, 1)
        End With
        Dim info As WebResponse = webrequest.GetResponse
        messagebox.show(info.Headers("content-length").ToString)
0
Utilisateur anonyme
20 août 2012 à 21:25
Oups c'est du vb6, désolé je n'ai rien dit
0
Rejoignez-nous