1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27 :
28 :
29 :
30 :
31 :
32 :
33 :
34 :
35 :
36 :
37 :
38 :
39 :
40 :
41 :
42 :
43 :
44 :
45 :
46 :
47 :
48 :
49 :
50 :
51 :
52 :
53 :
54 :
55 :
56 :
57 :
58 :
59 :
60 :
61 :
62 :
63 :
64 :
65 :
66 :
67 :
68 :
69 :
70 :
71 :
72 :
73 :
74 :
75 :
76 :
77 :
78 :
79 :
80 :
81 :
82 :
83 :
84 :
85 :
86 :
87 :
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 :
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
|
Option explicite
'egl1044
Const privé BUF_SIZE = amortisseur du défaut 4096 '4KB pour le ftp
Const privé INVALID_HANDLE_VALUE = (- 1)
Const privé OPEN_EXISTING = &H3&
Const privé GENERIC_READ = &H80000000
Const privé GENERIC_WRITE = &H40000000
Const privé INTERNET_OPEN_TYPE_PRECONFIG = 0
Const privé INTERNET_SERVICE_FTP = 1
Const privé INTERNET_DEFAULT_FTP_PORT = 21
Const privé FTP_TRANSFER_TYPE_UNKNOWN = 0
Privé déclarer la bibliothèque « kernel32 » de CreateFileW de fonction (lpFileName de ByVal en tant que dwDesiredAccess longtemps, de ByVal en tant que dwShareMode longtemps, de ByVal en tant que lpSecurityAttributes longtemps, de ByVal en tant que dwCreationDisposition longtemps, de ByVal en tant que dwFlagsAndAttributes longtemps, de ByVal en tant que longtemps, ByVal hTemplateFile en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « kernel32 » de ReadFile de fonction (ByVal hFile en tant que longtemps, lpBuffer de ByVal en tant que longtemps, nNumberOfBytesToRead de ByVal en tant que longtemps, lpNumberOfBytesRead de ByRef en tant que longtemps, ByVal lpOverlapped en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « kernel32 » de CloseHandle de fonction (hObject de ByVal en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « wininet » d'InternetOpenW de fonction (ByVal lpszAgent en tant que dwAccessType longtemps, de ByVal en tant que lpszProxyName longtemps, de ByVal en tant que lpszProxyBypass longtemps, de ByVal en tant que dwFlags longtemps, de ByVal en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « wininet » d'InternetConnectW de fonction (hInternetSession de ByVal en tant que sServerName longtemps, de ByVal en tant que nServerPort longtemps, de ByVal en tant que sUsername longtemps, de ByVal en tant que sPassword longtemps, de ByVal en tant que lService longtemps, de ByVal en tant que lFlags longtemps, de ByVal en tant que lcontext longtemps, de ByVal en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « wininet » d'InternetWriteFile de fonction (ByVal hFile en tant que longtemps, lpBuffer de ByVal en tant que longtemps, dwNumberOfBytesToWrite de ByVal en tant que longtemps, ByRef lpdwNumberOfBytesWritten en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « wininet » d'InternetCloseHandle de fonction (hInternet de ByVal en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « wininet » de FtpOpenFileW de fonction (hConnect de ByVal en tant que lpszFileName longtemps, de ByVal en tant que dwAccess longtemps, de ByVal en tant que dwFlags longtemps, de ByVal en tant que dwContext longtemps, de ByVal en tant que longtemps) en tant que longtemps
Privé déclarer la bibliothèque « kernel32 » de GetFileSize de fonction (ByVal hFile en tant que lpFileSizeHigh longtemps, de ByRef en tant que longtemps) en tant que longtemps
Obscurcir l'amortisseur (BUF_SIZE) comme byte
Obscurcir les dwReadBytes en tant que longtemps
Obscurcir les dwWrittenBytes en tant que longtemps
Faible hOpen en tant que longtemps
Obscurcir le hConnect en tant que longtemps
Obscurcir le hInternet en tant que longtemps
Obscurcir hFile en tant que longtemps
FtpPutFileEx secondaire public (_
szServer de ByVal comme corde, _
szUser de ByVal comme corde, _
szPassword de ByVal comme corde, _
ByVal szLocalFile comme corde, _
ByVal szServerFile comme corde)
Faible dwStatus en tant que longtemps
Faible dwLoFileSize en tant que longtemps
Faible dwHiFileSize en tant que longtemps
Obscurcir dwPercent en tant que longtemps
'/init
hOpen = InternetOpenW (0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
'/relier au ftp server
hConnect = InternetConnectW (hOpen, StrPtr (szServer), INTERNET_DEFAULT_FTP_PORT, StrPtr (szUser), StrPtr (szPassword), INTERNET_SERVICE_FTP, 0, 0)
Si hConnect = 0 puis
Nettoyage
Debug.Print « InternetConnectW () » et Err.LastDllError
Sortir le sous-marin
Finir si
'/obtenir la poignée pour le nom de fichier qui sera écrit au ftp server
hInternet = FtpOpenFileW (hConnect, StrPtr (szServerFile), GENERIC_WRITE, FTP_TRANSFER_TYPE_UNKNOWN, 0)
Si hInternet = 0 puis
Nettoyage
Debug.Print « FtpOpenFile () » et Err.LastDllError
Sortir le sous-marin
Finir si
'/obtenir la poignée pour le dossier local pour lire des bytes
hFile = CreateFileW (StrPtr (« \ \ ? \ » et szLocalFile), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)
Si hFile = INVALID_HANDLE_VALUE alors
Nettoyage
Debug.Print « CreateFileW () » et Err.LastDllError
Sortir le sous-marin
Finir si
'// obtiennent la taille de fichier de fichier locale pour le progrès. Appuis de cet exemple
' seulement jusqu'à 2GB de progrès de reportage de statut.
dwLoFileSize = GetFileSize (hFile, dwHiFileSize)
'/lire le dossier local, écrivent des bytes de dossier de serveur
Faire
Si ReadFile (hFile, VarPtr (amortisseur (0)), BUF_SIZE, dwReadBytes, 0) puis
S'InternetWriteFile (hInternet, VarPtr (amortisseur (0)), dwReadBytes, dwWrittenBytes) puis
'Dépister la quantité de bytes écrits et de pourcentage.
dwStatus = (dwStatus + dwWrittenBytes)
dwPercent = (le dwStatus/dwLoFileSize) * 100
'Label1.Caption = dwPercent
Finir si
Autrement
La sortie font
Finir si
DoEvents
Faire une boucle jusqu'aux dwReadBytes = 0
Debug.Print « faits »
'/nettoyage
Nettoyage
Amortisseur d'effacement
Sous-marin d'extrémité
Nettoyage secondaire privé ()
Si hOpen <> 0 alors
InternetCloseHandle hOpen
hOpen = 0
Finir si
Si hConnect <> 0 puis
hConnect d'InternetCloseHandle
hConnect = 0
Finir si
Si hInternet <> 0 puis
hInternet d'InternetCloseHandle
hInternet = 0
Finir si
Si > 0 hFile puis
CloseHandle hFile
hFile = INVALID_HANDLE_VALUE
Finir si
Finir le sous-marin
|