quantum59
Messages postés7Date d'inscriptionmercredi 26 novembre 2008StatutMembreDernière intervention11 décembre 2008
-
11 déc. 2008 à 17:14
cs_bidouille007
Messages postés257Date d'inscriptionjeudi 11 septembre 2008StatutMembreDernière intervention22 décembre 2012
-
6 nov. 2009 à 01:59
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
cs_bidouille007
Messages postés257Date d'inscriptionjeudi 11 septembre 2008StatutMembreDernière intervention22 décembre 20121 4 nov. 2009 à 23:38
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
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.