2017-10-17 220 views
0

我正在使用以下腳本在SFTP服務器上上傳zip文件。雖然我看到服務器上的文件,但它始終顯示它的0 KB使用chilkat將zip文件上載到SFTP服務器python

#Code to upload file to a SFTP server abc.com 
import chilkat 
sftp = chilkat.CkSFtp() 
success = sftp.UnlockComponent("Anything trial") 
puttyKey = chilkat.CkSshKey() 
ppkText = puttyKey.loadText("xyz.ppk") 
success = puttyKey.FromPuttyPrivateKey(ppkText) 
sshHostname = "abc.com" 
sshPort = 22 
success = sftp.Connect(sshHostname,sshPort) 
sftp.AuthenticatePwPk("username", "password", puttyKey) 
success = sftp.InitializeSftp() 
filename = "file.zip" 
handle = sftp.openFile(filename ,"writeOnly","createTruncate") 
success = sftp.UploadFile(handle,"file.zip") 
success = sftp.CloseHandle(handle) 

回答

0

你不檢查呼叫成功返回值。如果openFile和CloseHandle均成功,但UploadFile失敗,則結果將是服務器上的長度爲0的文件。

您傳遞了一個沒有UploadFile路徑的文件名。這意味着你正嘗試從應用程序的當前工作目錄上傳文件「file.zip」,無論如何。我懷疑「file.zip」實際上並不在你應用的當前工作目錄中。您可以指定完整的絕對路徑或相對路徑,而不是「file.zip」。例如,「c:\ someDir \ file.zip」。另外,如果在檢查方法調用的成功/失敗後發現失敗,請檢查對象的LastErrorText屬性(sftp.LastErrorText)的內容。它將提供有關方法調用中發生的事件的詳細信息。

+0

另外..傳遞給OpenFile的文件名是要在服務器上創建的文件名。傳遞給UploadFile的文件路徑是本地文件路徑。 – Matt

相關問題