2013-06-03 44 views
-1

我想用相對路徑將文件上傳到遠程sftp服務器。例如,我希望能夠上傳到sftp://myserver.com/FileStore。我使用下面的代碼嘗試,但它不工作:注:主機是myserver.com/FileStore紅寶石net sftp上傳文件到相對路徑

uri = URI.parse('sftp://' + host) 
Net::SFTP.start(uri.host,username,:password=>password,:port=>port) do |sftp| 
        sftp.upload(testupload.zip,"#{uri.path}/testupload.zip") 
       end 

這是我的錯誤:

Net::SFTP::StatusException open /FileStore/testupload.zip (2, "no such file") 
+2

您確定此文件位於正確的位置,並且這是正確的路徑嗎?是'testupload.zip'調用testupload對象中的zip方法嗎?也許你需要從目標補丁中刪除'testupload.zip'? – fotanus

+0

即使我刪除它仍然不起作用。我認爲問題在於它將它檢測爲完整路徑而不是用戶主目錄的相對路徑。 – zulq

回答

2

我已經能夠使用來解決它以下代碼:

uri = URI.parse('sftp://' + host) 
Net::SFTP.start(uri.host,username,:password=>password,:port=>port) do |sftp| 
    sftp.upload(testupload.zip,"./#{uri.path}/testupload.zip") 
end 

始終假定服務器名稱後的路徑是登錄用戶的主目錄的相對路徑。