我使用以下脚本在SFTP服务器上上传zip文件。虽然我在服务器上看到该文件,但它总是显示它是0 Kb
#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 :(得分:0)
您没有检查呼叫的成功返回值。如果openFile和CloseHandle都成功,但UploadFile失败,则结果将是服务器上的0长度文件。
您传递的文件名没有上传文件的路径。这意味着您正尝试从应用程序的当前工作目录上传文件“file.zip”,无论是什么。我怀疑“file.zip”实际上并不在您应用的当前工作目录中。您可以指定完整的绝对路径或相对路径,而不是“file.zip”。例如,“c:\ someDir \ file.zip”。
此外,如果在检查方法调用的成功/失败后发现它失败,请检查对象的LastErrorText属性(sftp.LastErrorText)的内容。它将提供有关方法调用中发生的内容的详细信息。