2013-03-13 16 views
9

Come spostare un file sul server FTP remoto in una directory sullo stesso server FTP utilizzando Net :: FTP in ruby script. Conosco il nome del file e ho creato una directory usando ftp.mkdir ma a quanto pare non esiste un metodo per spostare il file nella cartella creata.Come spostare un file sul server FTP remoto in una directory sullo stesso server FTP utilizzando Net :: FTP nello script ruby ​​

+1

Vedere la soluzione qui: http://stackoverflow.com/a/17351238/1533054 – Sheharyar

risposta

0

Esistono metodi di istanza putbinaryfile e puttextfile. Non è abbastanza? O se si desidera semplicemente spostarsi in un ambito del server ftp, esiste il metodo rename.

+0

Desidero spostare solo nell'ambito del server ftp. Il caso d'uso è che ci saranno delle cartelle denominate inProcess ed elaborate per mantenere la traccia dei file in corso e da elaborare. –

1

Provare a rinominare il comando. Se non funziona, puoi provare il seguente comando: "SITE mv oldpath newpath". Questo dice al server di eseguire il comando sul server. Il comportamento previsto non funzionerà su tutti i server ma solo su alcuni, quindi usa il comando SITE solo quando sei sicuro che funzionerà con il server specifico.

+0

Ya, l'ho provato come questo ftp.sendcmd ("SITE mv # {f} inProcess/# {f}"). Non funziona .... dà ERRORE: 500 comando SITE sconosciuto. –

+0

@ user2164844 Quindi il server non supporta affatto SITE o non supporta i comandi della shell tramite SITE. Quindi la rinomina è l'unica alternativa (se funziona) –

9

I file (directory &) possono essere spostati utilizzando il metodo rename() della classe Net::FTP. Esempio:

ftp = Net::FTP.new("ftp.myserver.com","myusername","mypassword") 
ftp.binary = true 
ftp.passive = true 

path1 = "/original/dir/path/" # Dir to move 
path2 = "/new/path/"    # New path of Dir 

ftp.rename(path1, path2) 

E questo è tutto! Ciò fa sì che tutti i file si spostino da un percorso all'altro sullo stesso server FTP.

+0

Ti capita di sapere perché sono necessari i "/" principali? – shevy

+0

Non lo sono. Ma mi piace usare "percorsi assoluti" per evitare confusione in seguito. – Sheharyar