Italian FTP Command

moore_it

Well-Known Member
Licensed User
Longtime User
Ciao a tutti,

ho la necessità di inviare ad un server FTP i comando RNFR e RNTO per spostare un o più file da una cartella del server FTP ad un'altra.
la cosa funziona ma non per tutti i file qualcuno non viene spostato.

Qualcuno ha avuto lo stesso problema ?

Grazie mille
 

moore_it

Well-Known Member
Licensed User
Longtime User
Ti rispondo subito, no sono tutti uguali !
Infatti se poi provo a rifare la stessa operazione me ne scarica magari ancora un paio e se continuo alla fine li fa tutti.

B4X:
If cb.Checked Then
       ' creo i path per spostare i file 
       Dim remotepath As String = m.Get("d05")&"OUT/"&Globals.USER.Get("w01")&"/"&o(1)
       Dim remotehstpath As String = m.Get("d05")&"OUT/"&Globals.USER.Get("w01")&"/HST/"&o(1)
        ' scarico i dati
        Dim sf As Object = FTP.DownloadFile(remotepath,True,localpath,o(1))
        Wait For (sf) FTPLIST_DownloadCompleted (ServerPath As String, Success As Boolean)
         If Success Then
                ' importo il file e lo cancello 
                ImportToDatabase(o(1))
                ' scaricato correttamente sposto
                FTP.SendCommand("RNFR",remotepath)
                Dim sf As Object = FTP.SendCommand("RNTO",remotehstpath)
                wait for (sf)  FTPLIST_CommandCompleted (Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
                 If Success Then
                        MB00.SetMessage(fx.Colors.rgb(0,150,0),"File "&o(1)&" scaricato correttamente !",Chr(0xF071),True)
                 End If
         End If        
End If
 

sirjo66

Well-Known Member
Licensed User
Longtime User
ma tra RNFR e RNTO non devi fare anche lì un wait for ??
 

moore_it

Well-Known Member
Licensed User
Longtime User
i file che non vengono spostati mi danno questo errore anche se i comandi sono dati in sequenza

RNFR
RNTO

RNTO false 503 È necessario RNFR prima di RNTO

Che cavolo potrebbe essere ????
 

moore_it

Well-Known Member
Licensed User
Longtime User
Peso di avercela fatta !

B4X:
Dim FTPDWN As FTP
                        FTPDWN.Initialize("FTPDWN",m.Get("d01"),m.get("d02"),m.Get("d03"),m.Get("d04"))
                        FTPDWN.PassiveMode = True
                        Dim sf As Object = FTPDWN.DownloadFile(remotepath,False,localpath,remotefile)
                        wait for (sf) FTPDWN_DownloadCompleted (ServerPath As String, Success As Boolean)
                        If Success Then
                            Log("download "&remotefile)
                            ' importo il file e lo cancello
                            ImportToDatabase(remotefile)
                            Log("importato "&remotefile)
                            ' scaricato correttamente sposto
                            Dim WO As Object = FTPDWN.SendCommand("RNFR",remotepath)
                            wait for (WO) FTPDWN_CommandCompleted (Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
                            Dim WO As Object = FTPDWN.SendCommand("RNTO",remotehstpath)
                            wait for (WO) FTPDWN_CommandCompleted (Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
                            Log("ridenominato "&remotefile)
                            MB00.SetMessage(fx.Colors.rgb(0,150,0),"File "&remotefile&" scaricato correttamente !",Chr(0xF071),True)
                        Else
                            MB00.SetMessage(fx.Colors.rgb(150,0,0),LastException.Message,Chr(0xF071),False)
                            Log(LastException.Message)
                        End If
                        FTPDWN.Close
 

moore_it

Well-Known Member
Licensed User
Longtime User
Ciao LucaMs, non credo non essendo una procedura che non contiene sleep o altro ...
 

moore_it

Well-Known Member
Licensed User
Longtime User
No, il download è stato fatto e ho giustamente atteso che abbia finito poi importo il file nel database e poi sposto il file nell'ftp per storicizzarlo.
Quello che no riuscivo a fare era la storicizzazione che faceva a modo suo.
Poi ho capito che arrivava prima il comando RNTO del comando RNFR
 
Top