Subir txt por ftp

Iniciado por eldiabloxico, 19 Octubre 2008, 02:45 AM

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

eldiabloxico

me sale error, exactamente "Unable to contect to remote host"
LEE MI HISTORIA DE AMOR, Y OPINA ^^

Visita el foro de psicologia

Entra

Visita mi nuevo foro.

http://forodiablo.ar.gd

Y la web del foro.

http://eldiabloxico.es.tl

vivachapas

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

seba123neo

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...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Spider-Net

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
Código (vb) [Seleccionar]

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!

ssccaann43 ©

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
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

ssccaann43 ©

Si seba, pero es mejor q lo tenga todo asi puede subir y bajar archivos.
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

vivachapas

seba me podes pasar la forma con el winsock x favor... a mi me interesa...
gracias

seba123neo

aca lo pongo...

Código (vb) [Seleccionar]
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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

eldiabloxico

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...
LEE MI HISTORIA DE AMOR, Y OPINA ^^

Visita el foro de psicologia

Entra

Visita mi nuevo foro.

http://forodiablo.ar.gd

Y la web del foro.

http://eldiabloxico.es.tl