FtpOpenFile et FtpGetFileSize

Résolu
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 27 févr. 2006 à 17:21
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 2 mars 2006 à 19:34
Bon les gens, j'ai un souci et ca fait 6 h que jsuis dessus. Jcommence a peter un plomb.

Bon j'ai une fonction de telechargement qui utilise les api pour aller sur un ftp. J'aurai besoin de recuperer la taille du fichier a telecharger pour pouvoir la comparer a la taille du fichier apres le telechargement (voir si il a pas perdu qqchose en cours de route)

Voici mon code :
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" _
(ByVal Agent As String, ByVal Access As Long, ByVal proxy As String, _
ByVal bypass As String, ByVal Flags As Long) As Long

Private Declare Function InternetConnect Lib "wininet" Alias "InternetConnectA" _
(ByVal handle As Long, ByVal server As String, ByVal port As Long, _
ByVal user As String, ByVal password As String, ByVal services As Long, _
ByVal Flags As Long, ByVal Context As Long) As Long

Private Declare Function InternetCloseHandle Lib "wininet" (ByVal handle As Long) As Long

Public Declare Function FtpOpenFile Lib "Wininet.dll" Alias "FtpOpenFileA" _
(ByVal hFtpSession As Long, ByVal sBuff As String, ByVal Access As Long, _
ByVal Flags As Long, ByVal Context As Long) As Long

Private Declare Function FtpGetFileSize Lib "Wininet.dll" _
(ByVal hConnect As Long, _
lpdwFileSizeHigh As Long) As Long

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Const FTP_TRANSFER_TYPE_ASCII As Long = 1
Const GENERIC_READ = &H80000000

Sub tel(nomprod)
Dim hFile As Long
Dim taille As Long
Dim nFileSizeHigh As Long
Dim repert As String
nomprod correspond au "nom_du_fichier_sur_le_ftp"
repert = "repertoire_d'arrivé_du_telechargement"
transfer = FTP_TRANSFER_TYPE_ASCII
hNetConn = InternetOpen("un_site", 0, vbNullString, vbNullString, 0)
hFTPConn = InternetConnect(hNetConn, "mon_ftp", 21, "mon_user", "mon_pass", 1, 0, 0)
hFile = FtpOpenFile(hFTPConn, tex, GENERIC_READ, transfer, 0)
taille = FtpGetFileSize(hFile, nFileSizeHigh)
FtpGetFile hFTPConn, nomprod, repert & nomprod, False, 0, transfer, 0
InternetCloseHandle hFile
InternetCloseHandle hFTPConn
InternetCloseHandle hNetConn
End Sub

probleme: mon hfile a bien une valeur, mais ma taille me renvoie 0.
CAN YOU HELP ME PLEASE

merci d'avance

3 réponses

Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
2 mars 2006 à 19:34
Bon ben j'ai reussi a trouvé une solution apres de multiple recherche. En gras ce qui fait que ca a marché.

Private Declare Function FtpGetFileSize Lib "Wininet.dll" _
(ByVal hConnect As Long, lpdwFileSizeHigh As String) As Long


Function tel(ByVal nomprod As String)
Dim hFile As Long, taille As Long, nFileSizeHigh As Long
Dim repert As String, com As String
repert = "C:\TEMP\MicroTelGigaX"
transfer = FTP_TRANSFER_TYPE_ASCII
hNetConn = InternetOpen("un site", 0, vbNullString, vbNullString, 0)
hFTPConn = InternetConnect(hNetConn, "unftp", 21, "un user", "un pass", 1, 0, 0)
hFile = FtpOpenFile(hFTPConn, nomprod, GENERIC_READ, transfer, 0)
taille = FtpGetFileSize(hFile, nomprod )
FtpGetFile hFTPConn, nomprod, repert & nomprod, False, 0, transfer, 0
InternetCloseHandle hFile
InternetCloseHandle hFTPConn
InternetCloseHandle hNetConn
tel = taille
End Function

Bon au depart c'etait un sub maintenant c une fonction mais ca n'a rien a voir, c just parce que jve recuperer la taille dans mon prog principale.

En tout cas ca m'a appris que les API sont modifiables.
3
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
28 févr. 2006 à 13:23
Apparement mon sujet n'interresse personne.
Allez un tit n'effort, c'est super important. Jsuis bloqué rien qu'a cause de ca.
Ou alors si vous pouvez m'indiquer un autre moyen pour recuperer la taille d'un fichier sur un ftp indiquez jsuis toujours preneur. Sauf si c du .bat, mon tuteur trouve ca pas jolie (enfin bon)
SVP
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
1 mars 2006 à 09:52
Y a toujours personne pour m'aider, c'est bien dommage.
Ecrivez au moins un petit message de soutien dans ma douleur (lol).
J'ai continuer a chercher l'erreur mais je ne trouve pas.
Bon ben bonne journée a ceux qui liront ce topic.
0
Rejoignez-nous