elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Subida de Archivo a FTP Automatico?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Subida de Archivo a FTP Automatico?  (Leído 3,628 veces)
P4nd3m0n1um


Desconectado Desconectado

Mensajes: 1.419



Ver Perfil
Subida de Archivo a FTP Automatico?
« en: 4 Septiembre 2011, 00:36 am »

bien resulta q estoy trabajandon en un simple programa q envia un archivo jpg para actualizar el sitio aca un cierto tiempo. os pongo el code, y el source para bajar. este por ejemplo esta con txt.

FORM1:
Código
  1. Option Explicit
  2.  
  3. 'Variable Para la clase
  4. Dim Ftp As Class1
  5.  
  6. 'Conectar al servidor FTP.
  7. '***********************************
  8.  
  9. Private Sub cmdConectar_Click()
  10.  
  11.   With Ftp
  12.  
  13.      .Inicializar Me
  14.      'Le establecemos la contraseña de la cuenta Ftp
  15.      .PassWord = txtPassword
  16.  
  17.      'Le establecemos el nombre de usuario de la cuenta
  18.      .Usuario = txtUsuario
  19.  
  20.      'Establecesmo el nombre del Servidor FTP
  21.      .Servidor = txtServidor
  22.  
  23.      '...conectamos al servidor FTP. EL label es el control donde mostrar _
  24.        los errores y el estado de la conexión
  25.      If .ConectarFtp(Label4) = False Then
  26.          MsgBox "No se puedo conectar"
  27.         Exit Sub
  28.       End If
  29.      'Mostramos en el label el path del directorio actual donde estamos _
  30.        ubicados en el servidor
  31.       lblDiractual = Ftp.GetDirectorioActual
  32.  
  33.       'Le indicamos el ListView donde se listarán los archivos
  34.       Set .ListView = ListView1
  35.  
  36.      .ListarArchivos
  37.   End With
  38.      'Habilitamos los controles del frame2 (subir archivo, bajar, borrar etc..)
  39.      Frame2.Enabled = True
  40.  
  41. End Sub
  42.  
  43. Private Sub CmdDesconectar_Click()
  44. 'Desconectamos del servidor FTP
  45. Ftp.Desconectar
  46. Frame2.Enabled = False
  47. End Sub
  48.  
  49. 'Establece el modo de transferencia (binario, Ascii o desconocido)
  50. Private Sub Combo1_Click()
  51. Select Case Combo1.ListIndex
  52.  Case 0: Ftp.TipoTransferencia = [ ASCII ]
  53.  Case 1: Ftp.TipoTransferencia = [ BINARIO ]
  54.  Case 2: Ftp.TipoTransferencia = [ DESCONOCIDO ]
  55. End Select
  56.  
  57. End Sub
  58.  
  59. 'Crear Directorio en el directorio FTP actual
  60. Private Sub Command1_Click()
  61. Dim carpeta As String
  62. carpeta = InputBox("Escriba el nombre de la carpeta", "Crear directorio")
  63. If carpeta <> "" Then
  64.   Ftp.CrearDirectorio carpeta
  65. End If
  66. End Sub
  67.  
  68.  
  69. 'Sube un archivo al FTP
  70. Private Sub Command3_Click()
  71. 'On Error GoTo errsub
  72. Dim i As Integer
  73. cd.CancelError = True
  74. 'cd.ShowOpen
  75. If cd.FileName = "F:\code\sitio\tren.txt" Then Exit Sub
  76.  
  77. For i = 1 To ListView1.ListItems.Count
  78.    If cd.FileTitle = ListView1.ListItems(i) Then
  79.       If MsgBox("El archivo que itenta subir ya existe. ¿Sobreescribirlo?", _
  80.                  vbQuestion + vbYesNo) = vbYes Then
  81.  
  82.         ListView1.ListItems.Remove i
  83.         Ftp.SubirArchivo cd.FileName, cd.FileTitle
  84.         Exit Sub
  85.        Else
  86.         Exit For
  87.       End If
  88.    End If
  89. Next
  90.  
  91. Ftp.SubirArchivo cd.FileName, cd.FileTitle
  92.  
  93. Exit Sub
  94. errsub:
  95. If Err.Number = 32755 Then Exit Sub
  96. End Sub
  97.  
  98. Private Sub Command2_Click()
  99.    'Actualiza el ListView mostrando los dir y archivos del dir Ftp actual
  100.    Ftp.Actualizar
  101. End Sub
  102.  
  103.  
  104. 'Renombrar archivo remoto
  105. Private Sub Command4_Click()
  106. Dim localFile As String, nuevoNombre As String
  107.  
  108. nuevoNombre = InputBox("Se va a renombrar el archivo: " & ListView1.SelectedItem & vbCrLf & "Escriba el nuevo nombre para este archivo")
  109.  
  110. If nuevoNombre = "" Then Exit Sub
  111.  
  112. Ftp.RenombrarArchivo ListView1.SelectedItem, nuevoNombre
  113.  
  114. End Sub
  115.  
  116.  
  117. 'Eliminar archivo
  118. Private Sub Command5_Click()
  119. If ListView1.SelectedItem Is Nothing Then MsgBox "No hay ningún archivo seleccionado para eliminar", vbInformation: Exit Sub
  120.  
  121. If MsgBox("Eliminar el archivo:" & ListView1.SelectedItem & "??", vbYesNo + vbExclamation) = vbYes Then
  122.   Ftp.EliminarArchivo ListView1.SelectedItem
  123.   ListView1.ListItems.Remove ListView1.SelectedItem.Index
  124. End If
  125. End Sub
  126.  
  127.  
  128. 'Eliminar carpeta Ftp
  129. Private Sub Command6_Click()
  130. If ListView1.SelectedItem Is Nothing Then MsgBox "No hay ninguna carpeta seleccionada para eliminar", vbInformation: Exit Sub
  131.  
  132. If MsgBox("Eliminar el Directorio: " & vbCrLf & ListView1.SelectedItem & "??", vbYesNo + vbExclamation) = vbYes Then
  133.   Ftp.EliminarDirectorio ListView1.SelectedItem
  134.   ListView1.ListItems.Remove ListView1.SelectedItem.Index
  135. End If
  136.  
  137.  
  138. End Sub
  139.  
  140. 'Descarga un archivo del FTP
  141. Private Sub Command7_Click()
  142. Dim pathLocal As String
  143. pathLocal = InputBox("Escriba la ruta donde descargar el archivo remoto" & vbCrLf & ListView1.SelectedItem, "descargar archivo", "c:\")
  144.  If pathLocal = "" Then
  145.     Exit Sub
  146.  Else
  147.     Ftp.ObtenerArchivo ListView1.SelectedItem, pathLocal & _
  148.                        ListView1.SelectedItem
  149.  End If
  150. End Sub
  151.  
  152. Private Sub Form_Unload(Cancel As Integer)
  153. 'Eliminamos la referencia de la clase
  154. Set Ftp = Nothing
  155. End Sub
  156.  
  157. 'Cambia de directorio y actualiza la lista al hacer dobleclick
  158. Private Sub ListView1_DblClick()
  159. If ListView1.SelectedItem.SmallIcon = "carpeta" Then
  160.   'cambiamos de Dir
  161.   Ftp.CambiarDirectorio ListView1.SelectedItem
  162.   Ftp.ListarArchivos 'Lista los archivos
  163.   'Mostramos el directorio actual en el Label
  164.   lblDiractual = Ftp.GetDirectorioActual
  165.  
  166. End If
  167. End Sub
  168.  
  169.  
  170.  
  171. Private Sub Form_Load()
  172. Set Ftp = New Class1
  173. Combo1 = Combo1.List(0)
  174.   With Ftp
  175.  
  176.      .Inicializar Me
  177.      'Le establecemos la contraseña de la cuenta Ftp
  178.      .PassWord = txtPassword
  179.  
  180.      'Le establecemos el nombre de usuario de la cuenta
  181.      .Usuario = txtUsuario
  182.  
  183.      'Establecesmo el nombre del Servidor FTP
  184.      .Servidor = txtServidor
  185.  
  186.      '...conectamos al servidor FTP. EL label es el control donde mostrar _
  187.        los errores y el estado de la conexión
  188.      If .ConectarFtp(Label4) = False Then
  189.          MsgBox "No se puedo conectar"
  190.         Exit Sub
  191.       End If
  192.      'Mostramos en el label el path del directorio actual donde estamos _
  193.        ubicados en el servidor
  194.       lblDiractual = Ftp.GetDirectorioActual
  195.  
  196.       'Le indicamos el ListView donde se listarán los archivos
  197.       Set .ListView = ListView1
  198.  
  199.      .ListarArchivos
  200.   End With
  201.      'Habilitamos los controles del frame2 (subir archivo, bajar, borrar etc..)
  202.      Frame2.Enabled = True
  203.      On Error GoTo errsub
  204. Dim i As Integer
  205. 'cd.CancelError = True
  206. 'cd.ShowOpen
  207. If cd.FileName = "F:\code\sitio\tren.txt" Then Exit Sub
  208.  
  209. For i = 1 To ListView1.ListItems.Count
  210.    If cd.FileTitle = ListView1.ListItems(i) Then
  211.       If MsgBox("El archivo que itenta subir ya existe. ¿Sobreescribirlo?", _
  212.                  vbQuestion + vbYesNo) = vbYes Then
  213.  
  214.          ListView1.ListItems.Remove i
  215.          Ftp.SubirArchivo cd.FileName, cd.FileTitle
  216.          Exit Sub
  217.        Else
  218.          Exit For
  219.       End If
  220.    End If
  221. Next
  222.  
  223. Ftp.SubirArchivo cd.FileName, cd.FileTitle
  224.  
  225. Exit Sub
  226. errsub:
  227. If Err.Number = 32755 Then Exit Sub
  228. End Sub
  229.  

Class1:
Código
  1. 'Path mas largo
  2. Private Const MAX_PATH = 260
  3. 'Constante para el atributo de directorio
  4. Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
  5.  
  6. Private Declare Function FileTimeToSystemTime Lib "kernel32" _
  7. (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  8.  
  9. Private Type SYSTEMTIME
  10.    intYear As Integer
  11.    intMonth As Integer
  12.    intDayOfWeek As Integer
  13.    intDay As Integer
  14.    intHour As Integer
  15.    intMinute As Integer
  16.    intSecond As Integer
  17.    intMilliSeconds As Integer
  18. End Type
  19.  
  20.  
  21. '--- tipos de archivos --- para el Upload y Download
  22. Private Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
  23. Private Const FTP_TRANSFER_TYPE_ASCII = &H1
  24. Private Const FTP_TRANSFER_TYPE_BINARY = &H2
  25.  
  26. 'Puerto FTP
  27. Private Const INTERNET_DEFAULT_FTP_PORT = 21
  28. Private Const INTERNET_SERVICE_FTP = 1
  29.  
  30. ' Modo de conexión FTP
  31. Private Const INTERNET_FLAG_PASSIVE = &H8000000
  32. Private Const PassiveConnection As Boolean = True
  33.  
  34. '--- formas de entrar en internet ---
  35. ' usa config del registro
  36. Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
  37. ' directo a internetnet
  38. Private Const INTERNET_OPEN_TYPE_DIRECT = 1
  39. ' via  proxy
  40. Private Const INTERNET_OPEN_TYPE_PROXY = 3
  41. ' prevent using java/script/INS
  42. Private Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4
  43.  
  44. 'Type para atributos de fecha y hora de archivos
  45. Private Type FILETIME
  46.    dwLowDateTime As Long
  47.    dwHighDateTime As Long
  48. End Type
  49.  
  50. 'Otros atributos de archivo tamaño, nombre, fecha etc..
  51. Private Type WIN32_FIND_DATA
  52.    dwFileAttributes As Long
  53.    ftCreationTime As FILETIME
  54.    ftLastAccessTime As FILETIME
  55.    ftLastWriteTime As FILETIME
  56.    nFileSizeHigh As Long
  57.    nFileSizeLow As Long
  58.    dwReserved0 As Long
  59.    dwReserved1 As Long
  60.    cFileName As String * MAX_PATH
  61.    cAlternate As String * 14
  62. End Type
  63.  
  64. ' Declaraciones Apis
  65. '***************************************************************
  66.  
  67.  
  68. Private Declare Function InternetCloseHandle _
  69.  Lib "wininet.dll" (ByVal hInet As Long) As Integer
  70. 'Establece una conexión a internet para poder iniciar seción Ftp
  71. Private Declare Function InternetConnect _
  72.  Lib "wininet.dll" Alias "InternetConnectA" _
  73.  (ByVal hInternetSession As Long, _
  74.   ByVal sServerName As String, _
  75.   ByVal nServerPort As Integer, _
  76.   ByVal sUserName As String, _
  77.   ByVal sPassword As String, _
  78.   ByVal lService As Long, ByVal lFlags As Long, _
  79.   ByVal lContext As Long) As Long
  80. 'Conecta al Ftp
  81. Private Declare Function InternetOpen _
  82.  Lib "wininet.dll" Alias "InternetOpenA" _
  83.   (ByVal sAgent As String, ByVal lAccessType As Long, _
  84.    ByVal sProxyName As String, _
  85.    ByVal sProxyBypass As String, _
  86.    ByVal lFlags As Long) As Long
  87. 'Establece el path corriente
  88. Private Declare Function FtpSetCurrentDirectory _
  89.   Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
  90.   (ByVal hFtpSession As Long, _
  91.    ByVal lpszDirectory As String) As Boolean
  92. 'Recupera el path corriente
  93. Private Declare Function FtpGetCurrentDirectory _
  94.   Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
  95.  (ByVal hFtpSession As Long, _
  96.   ByVal lpszCurrentDirectory As String, _
  97.   lpdwCurrentDirectory As Long) As Long
  98. 'Crea un directorio
  99. Private Declare Function FtpCreateDirectory _
  100.   Lib "wininet.dll" Alias "FtpCreateDirectoryA" _
  101.   (ByVal hFtpSession As Long, _
  102.   ByVal lpszDirectory As String) As Boolean
  103. 'Elimina un directorio del FTP
  104. Private Declare Function FtpRemoveDirectory _
  105.  Lib "wininet.dll" Alias "FtpRemoveDirectoryA" _
  106.  (ByVal hFtpSession As Long, _
  107.  ByVal lpszDirectory As String) As Boolean
  108. 'Borra un fichero
  109. Private Declare Function FtpDeleteFile _
  110.  Lib "wininet.dll" Alias "FtpDeleteFileA" _
  111.  (ByVal hFtpSession As Long, _
  112.  ByVal lpszFileName As String) As Boolean
  113. 'Renombra un fichero
  114. Private Declare Function FtpRenameFile _
  115.  Lib "wininet.dll" Alias "FtpRenameFileA" _
  116.  (ByVal hFtpSession As Long, _
  117.  ByVal lpszExisting As String, _
  118.  ByVal lpszNew As String) As Boolean
  119. 'Recupera un archivo
  120. Private Declare Function FtpGetFile Lib "wininet.dll" _
  121.   Alias "FtpGetFileA" (ByVal hConnect As Long, _
  122.  ByVal lpszRemoteFile As String, _
  123.  ByVal lpszNewFile As String, ByVal fFailIfExists As Long, _
  124.  ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
  125.  ByRef dwContext As Long) As Boolean
  126. 'Escribe un archivo
  127. Private Declare Function FtpPutFile Lib "wininet.dll" _
  128.   Alias "FtpPutFileA" (ByVal hConnect As Long, _
  129.  ByVal lpszLocalFile As String, _
  130.  ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, _
  131.  ByVal dwContext As Long) As Boolean
  132. 'Api Para los errores
  133. Private Declare Function InternetGetLastResponseInfo _
  134.  Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" _
  135.  (lpdwError As Long, ByVal lpszBuffer As String, _
  136.   lpdwBufferLength As Long) As Boolean
  137. 'Busca el primer archivo de un path
  138. Private Declare Function FtpFindFirstFile Lib "wininet.dll" _
  139.   Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, _
  140.   ByVal lpszSearchFile As String, _
  141.   lpFindFileData As WIN32_FIND_DATA, _
  142.   ByVal dwFlags As Long, ByVal dwContent As Long) As Long
  143. 'api para buscar el siguiente archivo
  144. Private Declare Function InternetFindNextFile Lib "wininet.dll" _
  145.   Alias "InternetFindNextFileA" (ByVal hFind As Long, _
  146.   lpvFindData As WIN32_FIND_DATA) As Long
  147.  
  148.  
  149.  
  150. Public Enum e_TipoTransferencia
  151. [ BINARIO ] = FTP_TRANSFER_TYPE_BINARY
  152. [ ASCII ] = FTP_TRANSFER_TYPE_ASCII
  153. [ DESCONOCIDO ] = FTP_TRANSFER_TYPE_UNKNOWN
  154. End Enum
  155.  
  156.    'Handle de la conexión Ftp
  157.    Dim HandleConect As Long
  158.    'Handle de la conexión a Internet
  159.    Dim hOpen As Long
  160.  
  161. 'Variables locales
  162. Private m_DirectorioActual As String
  163. Private m_Usuario As String
  164. Private m_PassWord As String
  165. Private m_Servidor As String
  166. Private m_DirAnterior As String
  167. Private m_listView As ListView
  168. Private m_TipoTransferencia  As Long
  169. Private m_form As Form
  170.  
  171. Private ctrl As Object
  172.  
  173. 'Funciones Varias para el manejo de archivos y carpetas en el servidor Ftp
  174. '***********************************************************************
  175. '***********************************************************************
  176.  
  177. 'Rutina que conecta al Servidor Ftp
  178. Public Function ConectarFtp(Optional ControlStatus As Object _
  179.                            = Nothing) As Boolean
  180.  
  181. 'Verificamos que los datos de la cuenta estén establecidas, si no mostramos un _
  182.  mensaje y salimos
  183. If m_Usuario = "" Or m_Servidor = "" Or m_PassWord = "" Then
  184.   MsgBox "No se puede conectar. Verifique el Nombre de usuario," _
  185.   & "El nombre del Servidor y la contraseña que estén establecidas", vbCritical
  186.   ConectarFtp = False
  187.   Exit Function
  188. End If
  189.  
  190.  
  191.   Set ctrl = ControlStatus
  192.   Status "...Intentando conectar a: " & m_Servidor
  193.   m_form.MousePointer = vbHourglass
  194.  
  195. 'Abrimos una conexión a Internet
  196. hOpen = InternetOpen(vbNullString, _
  197.        INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, _
  198.        vbNullString, 0)
  199.  
  200. If hOpen = 0 Then
  201.   Status "Error en la conexión a internet, compruebe la conexión"
  202.   m_form.MousePointer = vbDefault
  203.   ConectarFtp = False
  204.   Exit Function
  205. End If
  206. 'Conectamos al servidor FTP, pasandole los datos: login y servidor
  207. HandleConect = InternetConnect(hOpen, m_Servidor, _
  208.               INTERNET_DEFAULT_FTP_PORT, m_Usuario, _
  209.               m_PassWord, INTERNET_SERVICE_FTP, _
  210.               IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
  211.  
  212. If HandleConect = 0 Then
  213.   Status "Error. Compruebe los datos del servidor Ftp sin son correctos"
  214.   m_form.MousePointer = vbDefault
  215.   ConectarFtp = False
  216.   Exit Function
  217. End If
  218. Status "Conectado a: " & m_Servidor
  219. m_form.MousePointer = vbDefault
  220. ConectarFtp = True
  221. End Function
  222.  
  223. 'Desconecta del servidor FTP
  224. '**************************************************
  225. Public Sub Desconectar()
  226.    Dim ret As Long
  227.    'cierra la conexion FTP
  228.    ret = InternetCloseHandle(HandleConect)
  229.    If ret = 0 Then Status "Error al desconectar": Exit Sub
  230.    'cierra la conexion a internet
  231.    ret = InternetCloseHandle(hOpen)
  232.    If ret = 0 Then Status "Error al desconectar": Exit Sub
  233.  
  234.    Status "Desconectado de: " & m_Servidor
  235.    Class_Terminate
  236. End Sub
  237.  
  238. 'Recupera el directorio actual donde estamos ubicados
  239. '*****************************************************
  240. Public Function GetDirectorioActual() As String
  241.    'Crea un buffer
  242.    m_DirectorioActual = String(MAX_PATH, 0)
  243.    'Obtenemos el directorio actual
  244.     ret = FtpGetCurrentDirectory(HandleConect, m_DirectorioActual, _
  245.           Len(m_DirectorioActual))
  246.     GetDirectorioActual = m_DirectorioActual
  247. End Function
  248.  
  249. 'Establecemos el Directorio Actual
  250. '****************************************************
  251. Public Sub CambiarDirectorio(PathDirectorio As String)
  252.  
  253.  
  254.    Dim pData As WIN32_FIND_DATA
  255.    Dim hFind As Long  'handle usado para buscar fichs en FTP
  256.    Dim ret As Long
  257.    Dim strDir As String
  258.  
  259.  
  260.  
  261.    strDir = Replace(m_DirectorioActual, Chr(0), "")
  262.  
  263.    If strDir = "/" And PathDirectorio = "../Subir un nivel" Then: Exit Sub
  264.  
  265.    m_form.MousePointer = vbHourglass
  266.  
  267.    If PathDirectorio = "../Subir un nivel" Then
  268.      pos = InStrRev(strDir, "/")
  269.      strDir = Left(strDir, pos)
  270.  
  271.  
  272.  
  273.      'Cambia al Directorio Ftp especificado
  274.       ret = FtpSetCurrentDirectory(HandleConect, strDir)
  275.  
  276.       If ret = 0 Then
  277.          Status "Error al cambiar de directorio."
  278.       End If
  279.       m_form.MousePointer = vbDefault
  280.       Exit Sub
  281.    End If
  282.  
  283.    'Cambia al Directorio especificado
  284.    ret = FtpSetCurrentDirectory(HandleConect, strDir & "/" & PathDirectorio)
  285.  
  286.    If ret = 0 Then
  287.       Status "Error al cambiar de directorio"
  288.    End If
  289.    m_form.MousePointer = vbDefault
  290.  
  291. End Sub
  292.  
  293.  
  294. 'Crea un nuevo directorio
  295. '*******************************************
  296. Public Sub CrearDirectorio(NameDirectorio As String)
  297.  
  298. 'Creamos un nuevo  directorio ('testing')
  299. ret = FtpCreateDirectory(HandleConect, NameDirectorio)
  300. If Not ret Then
  301.   Status "Error al crear el directorio, compruebe el nombre que sea válido"
  302. Else
  303.   m_listView.ListItems.Add , , NameDirectorio, , "carpeta"
  304.   m_listView.ListItems(m_listView.ListItems.Count).Selected = True
  305.   m_listView.SetFocus
  306. End If
  307.  
  308. End Sub
  309.  
  310. 'Crea o sube un nuevo Archivo.
  311. '********************************************
  312. Public Sub SubirArchivo(localArchivo As String, NombreArchivoRemoto As String)
  313. 'manda fichero al servidor FTP
  314. ret = FtpPutFile(HandleConect, localArchivo, NombreArchivoRemoto, _
  315.           m_TipoTransferencia, 0)
  316. If ret Then
  317.   m_listView.ListItems.Add , , NombreArchivoRemoto, , "archivo"
  318.   m_listView.ListItems(m_listView.ListItems.Count).Selected = True
  319.   m_listView.SetFocus
  320. Else
  321.   Status "Error al subir el fichero:" & NombreArchivoRemoto
  322. End If
  323. End Sub
  324.  
  325.  
  326. 'Renombra un archivo en el directorio Ftp corriente
  327. '****************************************************
  328. Public Sub RenombrarArchivo(Archivo As String, nuevoNombre As String)
  329.  
  330. 'renombra 'test.htm' to 'apiguide.htm'
  331. ret = FtpRenameFile(HandleConect, Archivo, nuevoNombre)
  332.  
  333. If ret Then
  334.   m_listView.SelectedItem.Text = nuevoNombre
  335.   m_listView.SetFocus
  336. Else
  337.   Status "Error al renombrar el fichero:" & nuevoNombre
  338. End If
  339.  
  340. End Sub
  341.  
  342.  
  343. Public Sub ObtenerArchivo(ArchivoRemoto As String, ArchivoLocal As String, _
  344.           Optional SobreEscribir As Boolean = False)
  345. 'recupera fichero del servidor FTP: ArchivoRemoto es el nombre del archivo remoto
  346. 'ArchivoLocal es el nombre y ruta donde se colocará el archivo en local
  347. ret = FtpGetFile(HandleConect, ArchivoRemoto, ArchivoLocal, _
  348.           SobreEscribir, 0, m_TipoTransferencia, 0)
  349.  
  350. If ret Then
  351.   Status "Archivo descargado correctamente:"
  352.   m_listView.SetFocus
  353. Else
  354.   Status "Error al intentar descargar el fichero: " & ArchivoRemoto
  355. End If
  356.  
  357. End Sub
  358.  
  359. 'Eliminar Archivo del servidor Ftp
  360. Public Sub EliminarArchivo(Archivo As String)
  361. 'elimina el fichero del servidor FTP
  362. ret = FtpDeleteFile(HandleConect, Archivo)
  363. If Not ret Then
  364.    Status "Error. No se pudo eliminar el archivo: " & Archivo
  365. End If
  366. End Sub
  367.  
  368.  
  369. Public Sub EliminarDirectorio(Directorio As String)
  370. 'elimina el directorio
  371. ret = FtpRemoveDirectory(HandleConect, Directorio)
  372. If Not ret Then
  373.    Status "Error. No se pudo eliminar el Directorio: " & Directorio
  374. End If
  375. End Sub
  376.  
  377. Private Sub Status(mensaje As String)
  378. On Error GoTo SubError
  379. ctrl = mensaje
  380. Exit Sub
  381. SubError:
  382. If Err.Number = 91 Then Resume Next
  383. End Sub
  384.  
  385.  
  386. Public Sub ListarArchivos()
  387.    Dim Item As ListItem
  388.    Dim pData As WIN32_FIND_DATA
  389.    Dim hFind As Long  'handle usado para buscar fichs en FTP
  390.    Dim ret As Long   'valor devuelto por API
  391.  
  392.  
  393.    m_form.MousePointer = vbHourglass
  394.  
  395.    'crea buffer
  396.    pData.cFileName = String(MAX_PATH, 0)
  397.  
  398.    'busca el primer fichero
  399.    hFind = FtpFindFirstFile(HandleConect, "*.*", pData, 0, 0)
  400.  
  401.    m_listView.ListItems.Clear
  402.  
  403.    'Si Hfind vale 0 es porque no hay archivos ni directorios
  404.    If hFind = 0 Then
  405.       Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  406.       Item.SubItems(2) = getFecha(pData)
  407.       m_form.MousePointer = vbDefault
  408.       Exit Sub
  409.    End If
  410.  
  411.  
  412.    Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  413.  
  414.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Then
  415.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  416.       Item.SubItems(2) = getFecha(pData)
  417.    Else
  418.  
  419.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  420.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  421.       Item.SubItems(2) = getFecha(pData)
  422.    End If
  423.  
  424.    'si no hay mas Archivos sale
  425.    If hFind = 0 Then
  426.       m_form.MousePointer = vbDefault
  427.       Exit Sub
  428.    End If
  429.    Do
  430.        'crea buffer
  431.        pData.cFileName = String(MAX_PATH, 0) 'se llena con nulos
  432.        'find the next file
  433.        ret = InternetFindNextFile(hFind, pData)
  434.        'si no hay ficheros, no sigue
  435.        If ret = 0 Then Exit Do
  436.  
  437.  
  438.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Or _
  439.                               pData.dwFileAttributes = 0 Then
  440.       'Agrega el nombre del directorio
  441.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  442.       Item.SubItems(2) = getFecha(pData)
  443.    Else
  444.       'agrega el archivo y Muestra el tamaño del mismo en el LV
  445.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  446.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  447.       Item.SubItems(2) = getFecha(pData)
  448.    End If
  449.  
  450.    Loop
  451.    'Cerramos el handle de búsqueda
  452.    InternetCloseHandle hFind
  453.    m_listView.Sorted = True
  454.    m_form.MousePointer = vbDefault
  455. End Sub
  456.  
  457.  
  458. 'Actualiza la lista de Archivos y directorios en el ListView
  459. '************************************************************
  460. Public Sub Actualizar()
  461.  
  462.    Dim pData As WIN32_FIND_DATA
  463.    Dim hFind As Long  'handle usado para buscar fichs en FTP
  464.    Dim ret As Long   'valor devuelto por API
  465.    Dim Item As ListItem
  466.  
  467.  
  468.    m_form.MousePointer = vbHourglass
  469.  
  470.    'crea buffer
  471.    pData.cFileName = String(MAX_PATH, 0)
  472.  
  473.    'busca el primer fichero
  474.    hFind = FtpFindFirstFile(HandleConect, "*.*", pData, 0, 0)
  475.  
  476.    m_listView.ListItems.Clear
  477.  
  478.    If hFind = 0 Then
  479.       Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  480.       m_form.MousePointer = vbDefault
  481.       Exit Sub
  482.    End If
  483.  
  484.  
  485.    Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  486.  
  487.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Then
  488.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  489.       Item.SubItems(2) = getFecha(pData)
  490.    Else
  491.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  492.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  493.       Item.SubItems(2) = getFecha(pData)
  494.    End If
  495.  
  496.    'si no hay mas Archivos sale
  497.    If hFind = 0 Then
  498.       m_form.MousePointer = vbDefault
  499.       Exit Sub
  500.    End If
  501.    Do
  502.        'crea buffer
  503.        pData.cFileName = String(MAX_PATH, 0) 'se llena con nulos
  504.        'find the next file
  505.        ret = InternetFindNextFile(hFind, pData)
  506.        'si no hay ficheros, no sigue
  507.        If ret = 0 Then Exit Do
  508.        'Archivo
  509.  
  510.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Or pData.dwFileAttributes = 0 Then
  511.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  512.       Item.SubItems(2) = getFecha(pData)
  513.  
  514.    Else
  515.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  516.  
  517.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  518.       Item.SubItems(2) = getFecha(pData)
  519.  
  520.  
  521.  
  522.  
  523.    End If
  524.  
  525.    Loop
  526.    'Cerramos el handle de búsqueda
  527.    InternetCloseHandle hFind
  528.    m_listView.Sorted = True
  529.    m_form.MousePointer = vbDefault
  530. End Sub
  531.  
  532.  
  533. Private Function getFecha(pData As WIN32_FIND_DATA) As Date
  534.   Dim stSystemTime As SYSTEMTIME
  535.  
  536.            If FileTimeToSystemTime(pData.ftLastWriteTime, stSystemTime) > 0 Then
  537.                VBATime = DateSerial(stSystemTime.intYear, _
  538.                 stSystemTime.intMonth, _
  539.                stSystemTime.intDay) + TimeSerial(stSystemTime.intHour, _
  540.                stSystemTime.intMinute, stSystemTime.intSecond)
  541.            End If
  542.            getFecha = VBATime
  543. End Function
  544.  
  545.  
  546. Public Sub Inicializar(Formulario As Form)
  547.     Set m_form = Formulario
  548. End Sub
  549.  
  550. 'Para mostrar los errores
  551. '************************************************+
  552. Private Sub ShowError()
  553.    Dim lngNumError As Long
  554.    Dim strMemoError As String
  555.    Dim lngTamBuffer As Long
  556.    '-----------------------------
  557.    'Tamaño del buffer
  558.    InternetGetLastResponseInfo lngNumError, _
  559.       strMemoError, lngTamBuffer
  560.    'crea buffer
  561.    strMemoError = String(lngTamBuffer, 0)
  562.    'Recupera informacion del error
  563.    InternetGetLastResponseInfo lngNumError, _
  564.        strMemoError, lngTamBuffer
  565.    'Mostrar el error en msgbox
  566.    MsgBox "Error " & CStr(lngNumError) & ": " & strMemoError, _
  567.       vbOKOnly Or vbCritical
  568. End Sub
  569.  
  570.  
  571. 'Nombre de usuario de la cuenta Ftp
  572. '**********************************
  573. Public Property Get Usuario() As String
  574. Usuario = m_Usuario
  575. End Property
  576.  
  577. Public Property Let Usuario(ByVal vNewValue As String)
  578. m_Usuario = vNewValue
  579. End Property
  580.  
  581. 'Nombre del servidor Ftp
  582. '***********************
  583. Public Property Get Servidor() As String
  584. Servidor = m_Servidor
  585. End Property
  586.  
  587. Public Property Let Servidor(ByVal vNewValue As String)
  588. m_Servidor = vNewValue
  589. End Property
  590.  
  591. 'Contraseña de la cuenta FTP
  592. '***************************
  593. Public Property Get PassWord() As String
  594. PassWord = m_PassWord
  595. End Property
  596.  
  597. Public Property Let PassWord(ByVal vNewValue As String)
  598. m_PassWord = vNewValue
  599. End Property
  600.  
  601. 'Establece el ListView donde listar los ficheros
  602. '***********************************************
  603. Public Property Get ListView() As ListView
  604. Set ListView = m_listView
  605. End Property
  606.  
  607. Public Property Set ListView(ByVal vNewValue As ListView)
  608. Set m_listView = vNewValue
  609. End Property
  610.  
  611. 'Modo de Transferencia
  612. '**********************************************
  613. Public Property Get TipoTransferencia() As e_TipoTransferencia
  614.    TipoTransferencia = m_TipoTransferencia
  615. End Property
  616. Public Property Let TipoTransferencia(NewData As e_TipoTransferencia)
  617.    m_TipoTransferencia = NewData
  618. End Property
  619.  
  620.  
  621. Private Sub Class_Terminate()
  622. On Local Error Resume Next
  623.  'Cerramos la cesión FTP y la conexión a internet
  624.  InternetCloseHandle HandleConect
  625.  InternetCloseHandle hOpen
  626.  'Eliminamos las variables de objeto
  627.  Set ctrl = Nothing
  628.  Set ListView = Nothing
  629.  Set m_form = Nothing
  630. End Sub
  631.  

Proyecto: http://www.mediafire.com/?irabj2910123ird

Ahora mi problema es q mi servidor me da una carpeta "public_html"; donde tengo q guardar el archivo jpg. pero no puedo hacer que lo envie automaticamente a esa carpeta. alguien me podra dar una mano con esto?


« Última modificación: 4 Septiembre 2011, 00:45 am por Nëcrophagus » En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Subida de Archivo a FTP Automatico?
« Respuesta #1 en: 4 Septiembre 2011, 00:45 am »

Tienes que manejar bien tu clase FTP, no dejes todo el choclo de codigo :¬¬


En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: Subida de Archivo a FTP Automatico?
« Respuesta #2 en: 4 Septiembre 2011, 03:12 am »

Como todo servdor FTP, deduzco que tenes que posisionarte primero en la carpeta

Código
  1. 'Cambia de directorio y actualiza la lista al hacer dobleclick
  2.      'Cambia al Directorio Ftp especificado
  3.       ret = FtpSetCurrentDirectory(HandleConect, strDir)
  4.  
  5.       If ret = 0 Then
  6.          Status "Error al cambiar de directorio."
  7.       End If
  8.       m_form.MousePointer = vbDefault
  9.       Exit Sub
  10.    End If
  11.  

Y despues subirlo.

Código
  1. Dim i As Integer
  2. cd.CancelError = True
  3. 'cd.ShowOpen
  4. If cd.FileName = "F:\code\sitio\tren.txt" Then Exit Sub
  5.  
  6. For i = 1 To ListView1.ListItems.Count
  7.    If cd.FileTitle = ListView1.ListItems(i) Then
  8.       If MsgBox("El archivo que itenta subir ya existe. ¿Sobreescribirlo?", _
  9.                  vbQuestion + vbYesNo) = vbYes Then
  10.  
  11.         ListView1.ListItems.Remove i
  12.         Ftp.SubirArchivo cd.FileName, cd.FileTitle
  13.         Exit Sub
  14.        Else
  15.         Exit For
  16.       End If
  17.    End If
  18. Next
  19.  
  20. Ftp.SubirArchivo cd.FileName, cd.FileTitle

PD:
Estas haciendo un clon de un cliente FTP?
Eso esta medio visto ya :P
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
P4nd3m0n1um


Desconectado Desconectado

Mensajes: 1.419



Ver Perfil
Re: Subida de Archivo a FTP Automatico?
« Respuesta #3 en: 4 Septiembre 2011, 04:32 am »

PD:
Estas haciendo un clon de un cliente FTP?
Eso esta medio visto ya :P

parecido pero ya lo he solucionado! gracias por tu ayuda!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre la subida de un archivo a internet « 1 2 »
Seguridad
Pasha9 17 6,590 Último mensaje 27 Junio 2010, 21:31 pm
por winroot
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines