Gambas-it

Gambas3 => Programmazione => Topic aperto da: El Berto - 31 Dicembre 2012, 14:26:45

Titolo: Info Ftpclient: solo per spostare files?
Inserito da: El Berto - 31 Dicembre 2012, 14:26:45
Guardando in rete ci sono alcuni esempi su "FtpClient" per leggere/scrivere dei files.
Prendendo come riferimento alcuni client ftp (tipo WSFTP), appena mi collego mi vengono visualizzate le varie directory e i files contenuti.
E'già prevista una cosa simile con Gambas, oppure io devo conoscere A PRIORI la struttura delle directory del server FTP per leggere/scrivere i files?
Grazie.
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: pastrank - 04 Gennaio 2013, 21:17:07
E'già prevista una cosa simile con Gambas, oppure io devo conoscere A PRIORI la struttura delle directory del server FTP per leggere/scrivere i files?
Grazie.

Devi mandare il comando appropriato secondo il protocollo ftp (mi pare sia LIST, nel caso), e elaborare la risposta, per leggere i file e le cartelle. Ovviamente, prima dovrai effettuare il login, che a seconda del caso puo' essere anonimo o con pw.
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: El Berto - 05 Gennaio 2013, 13:26:52
Intendo dire, c'è un FtpClient.Get (non ricordo di preciso la sintassi, scrivo a caso) per scaricare un file e FtpClient.Put per trasmetterlo, ma mi sembra che una cosa del tipo FtpClient.List o FtpClient.Cwd non ci siano.
E'prevista la loro implementazione in futuro o posso solo andare ad analizzare il traffico con un TcpClient?
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: pastrank - 05 Gennaio 2013, 16:26:50
Intendo dire, c'è un FtpClient.Get (non ricordo di preciso la sintassi, scrivo a caso) per scaricare un file e FtpClient.Put per trasmetterlo, ma mi sembra che una cosa del tipo FtpClient.List o FtpClient.Cwd non ci siano.
E'prevista la loro implementazione in futuro o posso solo andare ad analizzare il traffico con un TcpClient?

Per quello che dicevo in quel modo: e neanche so se prima o poi sara' integrato con tutto il set dei comandi, non ricordo di avere mai letto nulla a proposito.
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: fsurfing - 05 Gennaio 2013, 17:58:04
hai provato con 


ftp.exec(["comando1","comando2",ecc])
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: El Berto - 06 Gennaio 2013, 15:39:46
In Gambas 2 non ce l'ho, vedo se riesco a installare il 3 e poi provo.
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: El Berto - 15 Gennaio 2013, 20:17:03
Come si usa???
Io ho provato a mettere FtpClient1.User, password, etc, etc...
Poi vado a fare FtpClient1.Exec con la stringa PWD, ma non vedo muoversi nulla con lo sniffer di rete.....
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: fsurfing - 15 Gennaio 2013, 22:31:46
Codice: [Seleziona]
Private pass As String = "asdasd"
Private utente As String = "asdas"
Private url As String = "ftp.nomesito/public_html/"
Private myftp As New FtpClient As "myftp"

Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub Button1_Click()
 
  myftp.URL = url
  myftp.User = utente
 
  myftp.Password = pass
  myftp.Timeout = 20
  Print myftp.Status
  myftp.Begin()
 myftp.Get()
 
  Print myftp.Status
End
Public Sub myftp_Read()
  Dim sbuf As String
 
  If Lof(myftp) Then
      Read #myftp, sbuf, Lof(myftp)
  Endif
 
  textarea1.text &= sbuf
  Print "pippo"
End
Public Sub myftp_Connect()
 
  Print "connesso"
 
End
Public Sub myftp_Finished()
 
  Print "finito"
 
End
Public Sub myftp_Error()
 
  Print myftp.ErrorText, "errore"
 
End


nella text area ottieni la lista dei file/cartelle mi pare
Titolo: Re: Info Ftpclient: solo per spostare files?
Inserito da: El Berto - 18 Gennaio 2013, 11:07:56
Ok, per ricevere qualcosa dal server FTP ci sono, ho aggiunto il codice

Codice: [Seleziona]
Public Sub MyFtp_Read()
    Dim sbuf As String

    While (Lof(MyFtp) > 0)
       Read #MyFtp, sbuf, 1
       TextArea1.Text &= sbuf
    Wend

End

Ora però non riesco a capire come trasmettere: se faccio

Codice: [Seleziona]
Public Sub Button2_Click()
  Dim msg As String = "CWD incoming" & gb.newline

    Write #MyFtp, msg, Len(msg)
End

non viene trasmesso niente....