2013-03-13 97 views

回答

0

還有putbinaryfileputtextfile實例方法。這還不夠嗎?或者,如果您只想移動到ftp服務器的範圍內,則有rename方法。

+0

我只想在ftp服務器的範圍內移動。 用例是將存在名爲inProcess的文件夾並進行處理,以保持正在處理和處理的文件的跟蹤。 – 2013-03-13 10:43:42

1

嘗試重命名命令。如果它不起作用,你可以嘗試下面的命令:「SITE mv oldpath newpath」。這告訴服務器在服務器上執行命令。預期行爲不適用於所有服務器,但只適用於某些服務器,因此只有在確定它可以與特定服務器配合使用時才使用SITE命令。

+0

雅,我嘗試了這樣的ftp.sendcmd(「SITE mv#{f} inProcess /#{f}」)。 不起作用....給出錯誤:500未知SITE命令。 – 2013-03-13 15:16:28

+0

@ user2164844然後服務器根本不支持SITE,或者不支持通過SITE的shell命令。然後重命名是唯一的選擇(如果它工作) – 2013-03-13 19:59:41

9

文件(&目錄)可以使用Net::FTP類的rename()方法移動。例如:

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) 

就是這樣!這會導致所有文件在同一FTP服務器上從一個路徑移動到另一個路徑。

+0

你碰巧知道爲什麼領先的'/'是必需的? – shevy 2015-03-04 09:11:38

+0

他們不是。但我只是喜歡用'絕對路徑'來避免以後的混淆。 – Sheharyar 2016-03-17 07:44:25

相關問題