PureBasic
PureBasic
Co:Z SFTP Binary File Download (from z/OS IBM Mainframe)
See more SFTP Examples
Demonstrates how to download a binary file, such as a .zip, from a Co:Z SFTP server on a z/OS IBM Mainframe.Chilkat PureBasic Downloads
IncludeFile "CkSFtpDir.pb"
IncludeFile "CkSFtp.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
sftp.i = CkSFtp::ckCreate()
If sftp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to the SSH server.
hostname.s = "sftp.example.com"
port.i = 22
success = CkSFtp::ckConnect(sftp,hostname,port)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
success = CkSFtp::ckAuthenticatePw(sftp,"myLogin","myPassword")
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
success = CkSFtp::ckInitializeSftp(sftp)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; To download a binary file from the Co:Z SFTP server,
; we must switch to binary mode in the following unconventional way.
; We pretend to fetch a directory listing for "/+mode=binary"
; This has the effect of putting the server in binary mode for transfers.
handle.s = CkSFtp::ckOpenDir(sftp,"/+mode=binary")
If CkSFtp::ckLastMethodSuccess(sftp) = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Download the "directory listing" (but it's not actually a directory listing, and we'll just discard it.)
dirListing.i = CkSFtpDir::ckCreate()
If dirListing.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkSFtp::ckReadDirListing(sftp,handle,dirListing)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
ProcedureReturn
EndIf
; Close the directory handle:
success = CkSFtp::ckCloseHandle(sftp,handle)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
ProcedureReturn
EndIf
; Download the binary file:
localFilePath.s = "c:/temp/test.zip"
remoteFilePath.s = "test.zip"
success = CkSFtp::ckDownloadFileByName(sftp,remoteFilePath,localFilePath)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
ProcedureReturn
EndIf
Debug "Success."
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
ProcedureReturn
EndProcedure