Go
Go
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 Go Downloads
success := false
// This example assumes the Chilkat FTP2 API to have been previously unlocked.
// See FTP2 Unlock Sample for sample code.
ftp := chilkat.NewFtp2()
ftp.SetHostname("www.my-ftp-server.com")
ftp.SetUsername("mFtpLogin")
ftp.SetPassword("myFtpPassword")
ftp.SetAuthTls(true)
ftp.SetPassive(true)
// Connect and login to the FTP server using TLS.
success = ftp.Connect()
if success != true {
fmt.Println(ftp.LastErrorText())
ftp.DisposeFtp2()
return
}
// We'll read the incoming data chunk-by-chunk and write to an output file.
fac := chilkat.NewFileAccess()
success = fac.OpenForWrite("qa_output/penguins2.jpg")
if success != true {
fmt.Println(fac.LastErrorText())
ftp.DisposeFtp2()
fac.DisposeFileAccess()
return
}
streamObj := chilkat.NewStream()
// Create a task to do the FTP download.
c := make(chan *chilkat.Task)
go ftp.GetFileToStreamAsync("penguins2.jpg",streamObj,c)
t := <-c
if ftp.LastMethodSuccess() != true {
fmt.Println(ftp.LastErrorText())
ftp.DisposeFtp2()
fac.DisposeFileAccess()
streamObj.DisposeStream()
t.DisposeTask()
return
}
// Start the task in a background thread.
bd := chilkat.NewBinData()
for streamObj.EndOfStream() != true {
// Get the next chunk of JPG bytes.
streamObj.ReadBd(bd)
// Do something with it..
// In this simple example, we'll just write to the file.
fac.FileWriteBd(bd,0,0)
// Clear for the next read.
bd.Clear()
}
fac.FileClose()
t.DisposeTask()
fmt.Println("Success.")
ftp.DisposeFtp2()
fac.DisposeFileAccess()
streamObj.DisposeStream()
t.DisposeTask()
bd.DisposeBinData()