Tcl
Tcl
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 Tcl Downloads
load ./chilkat.dll
set success 0
# This example assumes the Chilkat FTP2 API to have been previously unlocked.
# See FTP2 Unlock Sample for sample code.
set ftp [new_CkFtp2]
CkFtp2_put_Hostname $ftp "www.my-ftp-server.com"
CkFtp2_put_Username $ftp "mFtpLogin"
CkFtp2_put_Password $ftp "myFtpPassword"
CkFtp2_put_AuthTls $ftp 1
CkFtp2_put_Passive $ftp 1
# Connect and login to the FTP server using TLS.
set success [CkFtp2_Connect $ftp]
if {$success != 1} then {
puts [CkFtp2_lastErrorText $ftp]
delete_CkFtp2 $ftp
exit
}
# We'll read the incoming data chunk-by-chunk and write to an output file.
set fac [new_CkFileAccess]
set success [CkFileAccess_OpenForWrite $fac "qa_output/penguins2.jpg"]
if {$success != 1} then {
puts [CkFileAccess_lastErrorText $fac]
delete_CkFtp2 $ftp
delete_CkFileAccess $fac
exit
}
set streamObj [new_CkStream]
# Create a task to do the FTP download.
# t is a CkTask
set t [CkFtp2_GetFileToStreamAsync $ftp "penguins2.jpg" $streamObj]
if {[CkFtp2_get_LastMethodSuccess $ftp] != 1} then {
puts [CkFtp2_lastErrorText $ftp]
delete_CkFtp2 $ftp
delete_CkFileAccess $fac
delete_CkStream $streamObj
exit
}
# Start the task in a background thread.
CkTask_Run $t
set bd [new_CkBinData]
while {[CkStream_get_EndOfStream $streamObj] != 1} {
# Get the next chunk of JPG bytes.
CkStream_ReadBd $streamObj $bd
# Do something with it..
# In this simple example, we'll just write to the file.
CkFileAccess_FileWriteBd $fac $bd 0 0
# Clear for the next read.
CkBinData_Clear $bd
}
CkFileAccess_FileClose $fac
delete_CkTask $t
puts "Success."
delete_CkFtp2 $ftp
delete_CkFileAccess $fac
delete_CkStream $streamObj
delete_CkBinData $bd