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:
|
Opción explícita
'egl1044
Const privado BUF_SIZE = almacenador intermediario del defecto 4096 '4KB para el ftp
Const privado INVALID_HANDLE_VALUE = (- 1)
Const privado OPEN_EXISTING = &H3&
Const privado GENERIC_READ = &H80000000
Const privado GENERIC_WRITE = &H40000000
Const privado INTERNET_OPEN_TYPE_PRECONFIG = 0
Const privado INTERNET_SERVICE_FTP = 1
Const privado INTERNET_DEFAULT_FTP_PORT = 21
Const privado FTP_TRANSFER_TYPE_UNKNOWN = 0
Privado declarar la liberación “kernel32” de CreateFileW de la función (lpFileName de ByVal como dwDesiredAccess de largo, de ByVal como dwShareMode de largo, de ByVal como lpSecurityAttributes de largo, de ByVal como dwCreationDisposition de largo, de ByVal como dwFlagsAndAttributes como de largo, ByVal de largo, de ByVal hTemplateFile como de largo) como de largo
Privado declarar la liberación “kernel32” de ReadFile de la función (ByVal hFile como de largo, lpBuffer de ByVal como de largo, nNumberOfBytesToRead de ByVal como de largo, lpNumberOfBytesRead de ByRef como de largo, ByVal lpOverlapped como de largo) como de largo
Privado declarar la liberación “kernel32” de CloseHandle de la función (hObject de ByVal como de largo) como de largo
Privado declarar la liberación “wininet” de InternetOpenW de la función (ByVal lpszAgent como dwAccessType de largo, de ByVal como lpszProxyName de largo, de ByVal como lpszProxyBypass de largo, de ByVal como dwFlags de largo, de ByVal como de largo) como de largo
Privado declarar la liberación “wininet” de InternetConnectW de la función (hInternetSession de ByVal como sServerName de largo, de ByVal como nServerPort de largo, de ByVal como sUsername de largo, de ByVal como sPassword de largo, de ByVal como lService de largo, de ByVal como lFlags de largo, de ByVal como lcontext de largo, de ByVal como de largo) como de largo
Privado declarar la liberación “wininet” de InternetWriteFile de la función (ByVal hFile como de largo, lpBuffer de ByVal como de largo, dwNumberOfBytesToWrite de ByVal como de largo, ByRef lpdwNumberOfBytesWritten como de largo) como de largo
Privado declarar la liberación “wininet” de InternetCloseHandle de la función (hInternet de ByVal como de largo) como de largo
Privado declarar la liberación “wininet” de FtpOpenFileW de la función (hConnect de ByVal como lpszFileName de largo, de ByVal como dwAccess de largo, de ByVal como dwFlags de largo, de ByVal como dwContext de largo, de ByVal como de largo) como de largo
Privado declarar la liberación “kernel32” de GetFileSize de la función (ByVal hFile como lpFileSizeHigh de largo, de ByRef como de largo) como de largo
Amortiguar el almacenador intermediario (BUF_SIZE) como octeto
Amortiguar los dwReadBytes como de largo
Amortiguar los dwWrittenBytes como de largo
Dévil hOpen como de largo
Amortiguar el hConnect como de largo
Amortiguar el hInternet como de largo
Amortiguar hFile como de largo
FtpPutFileEx secundario público (_
szServer de ByVal como secuencia, _
szUser de ByVal como secuencia, _
szPassword de ByVal como secuencia, _
ByVal szLocalFile como secuencia, _
ByVal szServerFile como secuencia)
dwStatus dévil como de largo
Dévil dwLoFileSize como de largo
Dévil dwHiFileSize como de largo
Amortiguar dwPercent como de largo
'/init
hOpen = InternetOpenW (0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
'/conectar con el ftp server
hConnect = InternetConnectW (hOpen, StrPtr (szServer), INTERNET_DEFAULT_FTP_PORT, StrPtr (szUser), StrPtr (szPassword), INTERNET_SERVICE_FTP, 0, 0)
Si hConnect = 0 entonces
Limpieza
Debug.Print “InternetConnectW ()” y Err.LastDllError
Salir el submarino
Terminar si
'/conseguir la manija para el nombre de fichero que será escrito al ftp server
hInternet = FtpOpenFileW (hConnect, StrPtr (szServerFile), GENERIC_WRITE, FTP_TRANSFER_TYPE_UNKNOWN, 0)
Si hInternet = 0 entonces
Limpieza
Debug.Print “FtpOpenFile ()” y Err.LastDllError
Salir el submarino
Terminar si
'/conseguir la manija para el archivo local para leer octetos
¿hFile = CreateFileW (StrPtr (“\ \? \” y szLocalFile), GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)
Si es hFile = INVALID_HANDLE_VALUE entonces
Limpieza
Debug.Print “CreateFileW ()” y Err.LastDllError
Salir el submarino
Terminar si
'// consigue el tamaño del archivo local para el progreso. Ayudas de este ejemplo
' solamente hasta 2GB del progreso de la información del estado.
dwLoFileSize = GetFileSize (hFile, dwHiFileSize)
'/leer el archivo local, escriben octetos del archivo del servidor
Hacer
Si ReadFile (hFile, VarPtr (almacenador intermediario (0)), BUF_SIZE, dwReadBytes, 0) entonces
Si InternetWriteFile (hInternet, VarPtr (almacenador intermediario (0)), dwReadBytes, dwWrittenBytes) entonces
'Seguir la cantidad de octetos escritos y de porcentaje.
dwStatus = (dwStatus + dwWrittenBytes)
dwPercent = (el dwStatus/dwLoFileSize) * 100
'Label1.Caption = dwPercent
Terminar si
La salida hace
Terminar si
DoEvents
Colocar hasta dwReadBytes = 0
Debug.Print “hechos”
'/limpieza
Limpieza
Almacenador intermediario del Erase
Submarino del extremo
Limpieza secundaria privada ()
Si entonces <> hOpen 0
InternetCloseHandle hOpen
hOpen = 0
Terminar si
Si hConnect <> 0 entonces
hConnect de InternetCloseHandle
hConnect = 0
Terminar si
Si hInternet <> 0 entonces
hInternet de InternetCloseHandle
hInternet = 0
Terminar si
Si > 0 hFile entonces
CloseHandle hFile
hFile = INVALID_HANDLE_VALUE
Terminar si
Terminar el submarino
|