Hola aqui estoy de nuevo con otra duda, esta vez con ftp, explico.
Tengo un servidor ftp, lo que a mi me gustaria, es que el programa con darle a un boton suba un txt a un servidor ftp, y el que exita lo sobreescriba, ya que seguro que habra uno, espero que me puedan ayudar, gracias.
Hola,con el inet lo podes hacer..con el metodo Execute y el PUT...le tenes que pasarle el usuario ,la contraseña y el servidor..con apis me inmagino que se puede tambien...busca en internet que hay varios ejemplos..
saludos.
si no me ekivoco seria asi
Inet1.Execute "ftp://usuarios:contraseña@ftp.usuarios.lycos.es", "PUT prueba.txt"
pero nada, lo e mirado y no sube.
revisa esto :
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/209-inet-ftp.htm
esta completo.
Aca tenes una clase, usa APIs y tiene todo lo que necesitas para hacer eso.
http://www.advancevb.com.ar/page/index.php?option=com_content&view=article&id=49:ftp-class&catid=39:code&Itemid=56
Siento molestar, pero es que nada, lo de byway, e mirado el code que me podria ayudar, y nada, no me deja, da error, ya que solo necesito el de subir un archivo por ftp, solo ese, y el de cobein, claramente no se como usarlo, lo siento, e usado este.
Inet1.Execute "ftp://usuario:contraseña@ftp.usuarios.lycos.es", "PUT prueba.txt", "prueba.txt"
pero no sale ni error ni nada, y no se sube.
del codigo del enlace que puse de recursosvisualbasic, usando el inet :
With Inet1
'Asigna la Url, es decir el nombre del Host FTP
.URL = "ftp://ftp.usuarios.lycos.es"
'nombre de usuario y password de la cuanta FTP
.UserName = "Usuario"
.Password = "Pass"
'Escribe el fichero en el servidor con el comando Put
Call .Execute(, "Put " & "prueba.txt" & " " & "prueba.txt")
DoEvents
End With
Cita de: byway en 19 Octubre 2008, 06:08 AM
del codigo del enlace que puse de recursosvisualbasic, usando el inet :
Dim El_Host As String
El_Host = "ftp://" & txt_servidor
With Inet1
'Asigna la Url, es decir el nombre del Host FTP
.URL = El_Host
'nombre de usuario y password de la cuanta FTP
.UserName = Usuario
.Password = Pass
'Escribe el fichero en el servidor con el comando Put
Call .Execute(, "Put " & prueba.txt & " " & prueba.txt)
DoEvents
End With
se que no se mucho del control inet, pero, ai donde se conecta al servidor?, y como relleno eso, es decir, donde pone url, que pongo ftp.usuarios.lycos.es?? y arriba en el_host que pongo?
ups se me paso pera que lo edito...
ahora que lo veo esta demas la variable lo puedes poner directo..
.URL = "ftp://ftp.usuarios.lycos.es"
Call .Execute(, "Put " & "prueba.txt" & " " & "prueba.txt")
primer prueba.txt es el archivo a subir con ese nombre
segundo prueba.txt es el archivo subido con ese nombre, este lo puedes cambiar
Cita de: cobein en 19 Octubre 2008, 03:35 AM
Aca tenes una clase, usa APIs y tiene todo lo que necesitas para hacer eso.
http://www.advancevb.com.ar/page/index.php?option=com_content&view=article&id=49:ftp-class&catid=39:code&Itemid=56
Muy buena cobein ... esa clase esta completa.
me sale error, exactamente "Unable to contect to remote host"
yo tb intente con el source de recursosvisualbasic.. y tb me sale error :S (lo habia posteado mas abajo) trate de solucionarlo.. pero nunca pude y busque banda de ejemplos pero no lo pude solucionar..
el error me lo tiraba en la linea del Call .Execute
pero bue.. a ver si alguno lo puede solucionar XD
yo tambien pruebo y no funciona con el inet...y tambien probe hacerlo con las api's del FTP hay un ejemplo en la api guide..es como el modulo de cobein...pero tambien no anda...este no tira error...simplemente no lo sube...
Yo una vez hice un programa que subía por ftp un archivo a internet. Como tampoco lo conseguí de ninguna de las maneras lo que hice fue usar el cliente ftp de windows (que viene incorporado de serie ;D) para subir mi archivo. Es una pequeña chapuza pero bueno.. al menos funciona xD
Sub SubirArchivo()
Open "C:\datos.dat" For Output As #1
Print #1, "nombre de usuario"
Print #1, "contraseña"
Print #1, "put tuarchivo.txt"
Close #1
DoEvents
Shell "cmd /c ftp -v -i -s:C:\datos.dat ftp.tuhost.com", vbHide
DoEvents
Kill "C:\datos.dat"
End Sub
Este pequeño código genera un archivo que contiene los datos del server y también la instrucción put para poner tu archivo en tu host. Luego investigué en internet como podía usar todos esos datos para mandar el archivo al host con una sola línea y como véis en el ejemplo lo conseguí. Se sube el fichero sin problemas a internet y luego se borra el fichero que contiene los datos de login.
Supongo que al menos hace el apaño xD
Saludos!
Aqui tienes un source de un cliente FTP. Te ayudara un poco, no soy el creador. Pero modifique algunas cositas. Esta totalmente funcional, espero te ayude.
Cliente FTP (http://rapidshare.com/files/155584792/Cliente_FTP.rar.html)
digamos que no necesitamos un cliente FTP..solo que se apriete un boton y se suba el archivo nomas...ya tenemos todas las formas para subirlo pero no anda ninguna..recien probe una forma con el winsock y lo sube al TOQUE si alguien le interesa...
saludos.
Si seba, pero es mejor q lo tenga todo asi puede subir y bajar archivos.
seba me podes pasar la forma con el winsock x favor... a mi me interesa...
gracias
aca lo pongo...
Option Explicit
Private Type Datos
Respuesta As String
Comando As String
End Type
Dim Comandos(5) As Datos
Dim Estado As Integer
Dim Sitio As String, Usuario As String, Password As String, ArchivoRemoto As String, ArchivoLocal As String
Dim TamañoBuffer As Long
Dim EstaCerrado As Boolean
Private Sub Command1_Click()
Sitio = "ftp.tuservidor.com.ar"
Usuario = "tuusuario"
Password = "tucontraseña"
ArchivoLocal = "c:\a.txt"
ArchivoRemoto = "/carpetadetuservidor/a.txt"
Comandos(0).Respuesta = "220"
Comandos(0).Comando = "USER " + Usuario
Comandos(1).Respuesta = "331"
Comandos(1).Comando = "PASS " + Password
Comandos(2).Respuesta = "230"
Comandos(2).Comando = "TYPE I"
Comandos(3).Respuesta = "200"
Comandos(3).Comando = "PORT"
Comandos(4).Respuesta = "200"
Comandos(4).Comando = "STOR " + ArchivoRemoto
Comandos(5).Respuesta = ""
Comandos(5).Comando = ""
TamañoBuffer = 2920
Dim Nr1 As Integer
Dim Nr2 As Integer
Dim IPLocal As String
IPLocal = Winsock1.LocalIP
Do Until InStr(IPLocal, ".") = 0
IPLocal = Left(IPLocal, InStr(IPLocal, ".") - 1) + "," + Right(IPLocal, Len(IPLocal) - InStr(IPLocal, "."))
Loop
Randomize Timer
Nr1 = Int(Rnd * 12) + 5
Nr2 = Int(Rnd * 254) + 1
Comandos(3).Comando = "PORT " + IPLocal + "," + Trim(Str(Nr1)) + "," + Trim(Str(Nr2))
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
Winsock2.LocalPort = (Nr1 * 256) + Nr2
Winsock2.Listen
Winsock1.Close
Do Until Winsock1.State = 0
DoEvents
Loop
Winsock1.RemoteHost = Sitio
Winsock1.RemotePort = 21
Winsock1.Connect
Estado = 0
Do Until Winsock1.State = 7 Or Winsock1.State = 9
DoEvents
Loop
Select Case Winsock1.State
Case 9
MsgBox "No se pudo Conectar al Servidor " + Sitio + ".", vbOKOnly + vbInformation
Case 7
Open ArchivoLocal For Binary As #1
End Select
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim tmpS As String
Winsock1.GetData tmpS, , bytesTotal
Debug.Print tmpS;
Select Case Left(tmpS, 3)
Case Comandos(Estado).Respuesta
Winsock1.SendData Comandos(Estado).Comando + Chr(13) + Chr(10)
Debug.Print Comandos(Estado).Comando
Estado = Estado + 1
Case "150"
Do Until Winsock2.State = 7
DoEvents
Loop
Call EnviarDatos
Case "226"
Winsock1.Close
Do Until Winsock1.State = 0
DoEvents
Loop
MsgBox "Subida de Archivo Completa....", vbOKOnly + vbInformation
Case Else
MsgBox "No Hay Respuesta del Servidor: " + Left(tmpS, Len(tmpS) - 2), vbOKOnly + vbInformation
End Select
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
Winsock2.Accept requestID
Do Until Winsock2.State = 7
DoEvents
Loop
End Sub
Sub EnviarDatos()
Dim Take As Long
Dim Buffer As String
If LOF(1) - Seek(1) < TamañoBuffer Then Take = LOF(1) - Seek(1) + 1 Else Take = TamañoBuffer
Buffer = Input(Take, 1)
Winsock2.SendData Buffer
If Take < TamañoBuffer Then
Close #1
EstaCerrado = True
End If
End Sub
Private Sub Winsock2_SendComplete()
If EstaCerrado = True Then
Winsock2.Close
Do Until Winsock2.State = 0
DoEvents
Loop
EstaCerrado = False
Else
EnviarDatos
End If
End Sub
necesitas 2 winsock y un boton...
saludos.
Seba, de nuevo gracias por responder, mira e probado eso, e puesto todos los datos y todo, pero el problema es que ejecuto el programa, le doy al boton y ai se queda, no dice si ubo error, ni nada parecido, por lo que no se que podria ser, el firewall le da acceso a todo y los demas programas igual, asi que no se...
intenta satearlo a modo pasivo, la conexion debe ser en modo pasivo, de lo contrario no funciona. como lo haces pues internet transfer control
Cita de: carolmuriel en 20 Octubre 2008, 17:13 PM
intenta satearlo a modo pasivo, la conexion debe ser en modo pasivo, de lo contrario no funciona. como lo haces pues internet transfer control
No e entendido muy bien eso, ¿como lo podria hacer?
yo tb lei algo de q tenia q ser en pasivo... pero no se como se hace eso con el Inet?
Como me encanta entrar en un post y ver el avatar de vivachapas. Deox... Men de donde sera esa chica... :xD
jaja xD alto avatar eh!
es de una chica de arg, corrientes... la filmaron (eso es solo una parte) el resto lo han eliminado de internet...
el asunto es q se saco fotos (eroticas) con la ropa del colegio, la escuela se entero se armo el escandalo... rastrearon los videos q andaban dando vuelta y los hicieron desaparecer... echaron a varios chicos q participaron de eso en la escula (aunque el hecho no sucedio ahi).. y a la chica la sansionaron pero no fue echada...
y bue... yo tb me enamore XDj jaja
en fin nadie sabe como hacer la conexion en pasivo.. o si a lo mejor el problema es del servidor FTP decirme uno con el q les haya funcionado.. :P
SALUDOS
spam??? bueno entrando al tema
cada socket tiene una canal de salida y otro de entrada, es decir, por donde se mandan los datos y por donde se reciben. Y además se puede especificar si va a ser una conexión activa o pasiva, y aquí es donde aparece lo de los famosos puertos abiertos. una conexión pasiva es la de cualquier servicio de internet, como puede ser un servidor web que escucha peticiones por el puerto 80 (generalmente), el puerto en sí no es relevante cualquier puerto permite cualquier tipo de tráfico y esa es mi explicacion
aqui en esta web hay mucha info sobre eso y lo digo por que antes de escribir una burrada estuve navegando por el foro hazlo tu igual para q veas
Que raro vos por aca???
Cita de: cobein en 21 Octubre 2008, 03:12 AM
Que raro vos por aca???
que me estas corriendo si quieres me voy antes
No por favor =)
Cita de: cobein en 21 Octubre 2008, 03:16 AM
No por favor =)
aqui te toca cuidarme q si me pasa algo por tu culpa sera xd xd un gusto verte
Pero como se aria eso?
Cita de: carolmuriel en 21 Octubre 2008, 03:27 AM
Cita de: cobein en 21 Octubre 2008, 03:16 AM
No por favor =)
aqui te toca cuidarme q si me pasa algo por tu culpa sera xd xd un gusto verte
Jaja che cobein, te toca cuidar a la chica... Hermano andas perdido... Un saludo
Alguien responde?
Cita de: eldiabloxico en 21 Octubre 2008, 08:02 AM
Pero como se aria eso?
chamin tu conexión sera pasiva siempre y cuando no le hallas cambiado en los socket, vale cualkier conexión es pasiva, hermano lea un pokito el foro dele en buscar en el home y escriba internet tranfer protocol hay mucha info
Cita de: eldiabloxico en 21 Octubre 2008, 15:17 PM
Alguien responde?
Hermano, ya te dimos muchas opciones e ideas... No haremos tu tarea...
Te dire dos cositas:
USA GOOGLE
Por que no bajas el codigo que te dije y lo usas, no te custa nada y te ahorrarias varios problemas.
Aquí tenes ejemplos con Inet: http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/315-listar-archivos-con-inet.htm
A ver si aprendes a usar un buscador :¬¬
Cita de: ssccaann43 en 21 Octubre 2008, 15:21 PM
Cita de: eldiabloxico en 21 Octubre 2008, 15:17 PM
Alguien responde?
Hermano, ya te dimos muchas opciones e ideas... No haremos tu tarea...
Te dire dos cositas: USA GOOGLE
No pido que lo hagais, e USADO GOOGLE, y nada, los metodos que e encontrado no me van... no soy un lammer si eso es lo que piensas...
si es cierto xD yo tb ya probe banda de ejemplos y busque en google.. pero el problema sigue estando :S... estuve pensando q tal vez sea el servidor FTP, yo estoy usando GeoCities, no se si alguien pudo hacerlo con este...
SALUDOS
No creo que sea por eso, ya que yo uso el de lycos, y no creo que 2 servidores distintos fallen, sera otra cosa.