Telechargement SUR de fichier

Signaler
Messages postés
7
Date d'inscription
mercredi 26 novembre 2008
Statut
Membre
Dernière intervention
11 décembre 2008
-
Messages postés
257
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
-
Bonjour,

Dans mon code, j'ai utilisé une fonction qui telecharge un fichier texte.
Le problème, c'est que ma fonction n'est pas sur car il arrive parfois que le fichier ne soit pas entièrement téléchargé (1/4 du fichier parfois) alors que la fonction me renvoie un téléchargement OK....

Je ne peux pas connaitre à l'avance la taille réelle du fichier afin de le comparer avec ce qu'il y a sur le serveur.
je met en dessous ma fonction, si quelqu'un a une idée pour sécurisé mes transferts afin que je sois sur que mon téléchargement soit vraiment ok

merci bcp

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long

Private Const ERROR_SUCCESS As Long = 0
Private Const BINDF_GETNEWESTVERSION As Long = &H10
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Dim etattele As String

Public Function TelechargeURL(ByVal URL As String, ByVal fichierlocal As String) As Boolean
    Dim downloadfile As Boolean
   
    If DeleteUrlCacheEntry(URL) = 1 Then
       Debug.Print "Fichier Cache Trouvé et Effacé"
    Else
       Debug.Print "Pas de fichier en cache"
    End If

    downloadfile = URLDownloadToFile(0&, URL, fichierlocal, BINDF_GETNEWESTVERSION, 0&)
    If downloadfile = False Then
     Debug.Print "téléchargement ok"
     etattele = "ok"
    Else
     Debug.Print "Echec du téléchargement"
     etattele = "Echec"
    End If

End Function

3 réponses

Messages postés
257
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
1
Dim f As Integer
Dim webclient As New System.Net.WebClient()
Dim fichierout As String = "nomdufichieracharger.txt"
Dim fichiermaj As String = "http://adresse du fichier à charger"
f = 0
Try
webclient.DownloadFile(fichiermaj, fichierout)
Catch ex As Exception
f = 1
End Try
if f = 0 Then ' acces au fichier réussi
Dim reader As New StreamReader(fichierout)

code pour lire le fichier en local en final

reader.Close()
File.Delete(fichierout)
End If

sinon tu peux essayer de mettre une chaîne particulière à la fin de ton fichier et si tu ne l'as pas dans ce que tu as récupéré c'est que la lecture à échouer.

Espérant que cette solution n'arrive pas trop tard


007bidouille
Messages postés
2813
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Salut,

@bidouille007 > Je pense que si, c'est un peu tard :
> Dernier signe de vie le 17 août 2009 à 09:40:18 sur http://www.vbfrance.com/

Mais cela ne fait rien car d'autres membres liront peut être ce post.

Niveau code plus simple encore (en .Net) :

        Try
            My.Computer.Network.DownloadFile("c:\test.txt", "http://monurl.com/lefichiertext.txt")
        Catch ex As Exception
        End Try


Petite infos pour ceux qui reprendrais le code vb6 plus haut > Les types 'Long' des API vb6, se traduisent en 'Interger' en .Net :

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, _ 
                                                                                    ByVal szURL As String, _
                                                                                    ByVal szFileName As String, _
                                                                                    ByVal dwReserved As Integer, _
                                                                                    ByVal lpfnCB As Integer) As Long


Voila, bonne prog a tous !

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
257
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
1
Effectivement ta solution est bien plus light et je t'en remercie, ca allégera mon code pour sur.

bidouille007