problema al enviar carpeta por ftp

Iniciado por soru13, 5 Julio 2006, 18:03 PM

0 Miembros y 1 Visitante están viendo este tema.

soru13

bueno, tengo este codigo, esta bien el codigo pero no me sube la carpeta

Private 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
Private 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
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_DEFAULT_FTP_PORT = 21
Const INTERNET_SERVICE_FTP = 1
Const PassiveConnection As Boolean = True
Const INTERNET_FLAG_PASSIVE = &H8000000
Const FTP_TRANSFER_TYPE_UNKNOWN = &H0

Dim hConnection, hOpen, Num As Long
Private Sub Command1_Click()

    hOpen = InternetOpen("IE", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    DoEvents
    hConnection = InternetConnect(hOpen, "host", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
    DoEvents
    FtpSetCurrentDirectory hConnection, "\"
    DoEvents
    FtpPutFile hConnection, "C:\prueba", "prueba", FTP_TRANSFER_TYPE_UNKNOWN, 0
    DoEvents
    InternetCloseHandle hConnection
    InternetCloseHandle hOpen
End Sub
Private Sub Form_Load()

End Sub

NYlOn

Hola...
Mira, puede que el codigo funcione con archivos sueltos, pero segun tengo entendido no se puede enviar una carpeta completa. Lo que tendrias que hacer es fijarte todos los archivos que hay en la carpeta que queres enviar, crear la carpeta en el FTP y despues ir subiendolos. Repito, no estoy seguro de esto. Saludos.-

yofoxD

#2
hmm yo tengo una duda como podria hacer usando ese mismo codigo para subir por ejemplo varios .txt pero que estos tengan el mismo nombre y no se sobreescriban??.

Cicklow

lo que podes hacer es que antes de subirlo le pones:
FtpPutFile hConnection, "C:\prueba.txt", "prueba.txt_" & replace(time(),":","_"), FTP_TRANSFER_TYPE_UNKNOWN, 0

de esta forma subis files con el mismo nombre pero en el server ftp son con distintos nombres (va cambia que se pone el_time()).

con respecto a subir carpetas, no podes hacerlo, la unica que te keda, es recorrer la carpeta con la funcion DIR(), y de esta manera ir agregando los files a un array, y luego lo unico que haces es un for ubound, del array y vas subiendo los files.

saludos, avisen kualkier cosa les doy un ejemplo para cada uno (ahora no puedo estoy laburando)
www.cicklow.com . Solo Soy Un Ciego que Ve El Sonido Del Silencio

Cicklow

me acorde que en el foro le pase el code que te digo a un usuario:
http://foro.elhacker.net/index.php/topic,128082.0.html


saludos
www.cicklow.com . Solo Soy Un Ciego que Ve El Sonido Del Silencio