Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/09/2007, 12:27
Manu_Leon
 
Fecha de Ingreso: marzo-2005
Ubicación: Sevilla
Mensajes: 277
Antigüedad: 19 años, 1 mes
Puntos: 2
porcentaje de subida de archivo por FTP

hola, estoy haciendo un programa que sube archivos a un FTP.

El caso es que me gustaría implementarle una barra de progreso, para cuando sube un archivo pesado, saber elporcentaje que lleva subido.

Bueno, la idea que tenía era:

peso del archivo - (peso del archivo / datos transmitidos)

me daria el porcentaje transmitido del archivo. es decir, el progreso.

Lo que no se hallar es la cantidad de datos que he subido ya, es deicr los datos transmitidos.

Cómo puedo saber el tamaño que ya he subido??
Muchas gracias.
Elcódigo que uso es el siguiente:
Código:
public hOpen As Long, hConnection As Long, bRet As Long, Refrescar As Boolean
Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _
(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
      ByVal lpszRemoteFile As String, _
      ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
' Initializes an application's use of the Win32 Internet functions
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

' User agent constant.

  Public Const scUserAgent = "vb wininet"

' Use registry access settings.
Public Const INTERNET_INVALID_PORT_NUMBER = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const FTP_TRANSFER_TYPE_BINARY = &H1
Public Const INTERNET_FLAG_PASSIVE = &H8000000
' Opens a HTTP session for a given site.
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
(ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, _
ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
                 
' Number of the TCP/IP port on the server to connect to.
Public Const INTERNET_OPTION_USERNAME = 28
Public Const INTERNET_OPTION_PASSWORD = 29
Public Const INTERNET_OPTION_PROXY_USERNAME = 43
' Type of service to access.
Public Const INTERNET_SERVICE_FTP = 1

' Closes a single Internet handle or a subtree of Internet handles.
Public Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer


Public Function subir_al_ser()
Dim ruta_carpeta As String
 Dim Servevidor As String, Usuario As String, Contraseña As String
 '----------------------------------------
  Servevidor = "FTP.SERVIDOR.COM"
 Usuario = "USUARIO"
 Contraseña = "CONTRASEÑA"
 '----------------------------------------
Info "Conectando..."
'hacemos la conexion
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
If hOpen <> 0 Then Info "Iniciado correctamente" Else Info "Error 3"
hConnection = InternetConnect(hOpen, Servevidor, INTERNET_INVALID_PORT_NUMBER, Usuario, Contraseña, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
If hConnection <> 0 Then Info "Conexión exitosa" Else Info "Error 1": Exit Function
'selecionamos la carpeta en el servidor donde guardo la imagen

bRet = FtpSetCurrentDirectory(hConnection, ruta_carpeta)
If bRet <> 0 Then Info "Subiendo al servidor..." Else Info "Error 2": Exit Function

bRet = FtpPutFile(hConnection, archivo_sel, nombre_ar_sel, FTP_TRANSFER_TYPE_BINARY, 0)
If bRet <> 0 Then Info "Actualizando..." Else Info "Error": Exit Function
'cierro la conexion
If hConnection <> 0 Then InternetCloseHandle (hConnection)
Info "Archivo subido"