2017-10-17 31 views
0

次のスクリプトを使用してSFTPサーバーにzipファイルをアップロードしています。サーバー上のファイルは表示されますが、常に0 KBと表示されます。chilkat pythonを使用してzipファイルをSFTPサーバーにアップロード

#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

関連する問題