DataFlex
DataFlex
FTP Download Binary File to a Stream
See more FTP Examples
Demonstrates how to FTP download a binary file to a Chilkat stream.Note: This example requires Chilkat v9.5.0.67 or greater.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoFtp
Handle hoFac
Variant vStreamObj
Handle hoStreamObj
Variant vT
Handle hoT
Variant vBd
Handle hoBd
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat FTP2 API to have been previously unlocked.
// See FTP2 Unlock Sample for sample code.
Get Create (RefClass(cComChilkatFtp2)) To hoFtp
If (Not(IsComObjectCreated(hoFtp))) Begin
Send CreateComObject of hoFtp
End
Set ComHostname Of hoFtp To "www.my-ftp-server.com"
Set ComUsername Of hoFtp To "mFtpLogin"
Set ComPassword Of hoFtp To "myFtpPassword"
Set ComAuthTls Of hoFtp To True
Set ComPassive Of hoFtp To True
// Connect and login to the FTP server using TLS.
Get ComConnect Of hoFtp To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoFtp To sTemp1
Showln sTemp1
Procedure_Return
End
// We'll read the incoming data chunk-by-chunk and write to an output file.
Get Create (RefClass(cComCkFileAccess)) To hoFac
If (Not(IsComObjectCreated(hoFac))) Begin
Send CreateComObject of hoFac
End
Get ComOpenForWrite Of hoFac "qa_output/penguins2.jpg" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoFac To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatStream)) To hoStreamObj
If (Not(IsComObjectCreated(hoStreamObj))) Begin
Send CreateComObject of hoStreamObj
End
// Create a task to do the FTP download.
Get pvComObject of hoStreamObj to vStreamObj
Get ComGetFileToStreamAsync Of hoFtp "penguins2.jpg" vStreamObj To vT
If (IsComObject(vT)) Begin
Get Create (RefClass(cComChilkatTask)) To hoT
Set pvComObject Of hoT To vT
End
Get ComLastMethodSuccess Of hoFtp To bTemp1
If (bTemp1 <> True) Begin
Get ComLastErrorText Of hoFtp To sTemp1
Showln sTemp1
Procedure_Return
End
// Start the task in a background thread.
Get ComRun Of t To iSuccess
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
While ((ComEndOfStream(hoStreamObj)) <> True)
// Get the next chunk of JPG bytes.
Get pvComObject of hoBd to vBd
Get ComReadBd Of hoStreamObj vBd To iSuccess
// Do something with it..
// In this simple example, we'll just write to the file.
Get pvComObject of hoBd to vBd
Get ComFileWriteBd Of hoFac vBd 0 0 To iSuccess
// Clear for the next read.
Get ComClear Of hoBd To iSuccess
Loop
Send ComFileClose To hoFac
Send Destroy of t
Showln "Success."
End_Procedure