Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Unicode C) FTP Download Binary File to a StreamDemonstrates how to FTP download a binary file to a Chilkat stream. Note: This example requires Chilkat v9.5.0.67 or greater.
#include <C_CkFtp2W.h> #include <C_CkFileAccessW.h> #include <C_CkStreamW.h> #include <C_CkTaskW.h> #include <C_CkBinDataW.h> void ChilkatSample(void) { HCkFtp2W ftp; BOOL success; HCkFileAccessW fac; HCkStreamW streamObj; HCkTaskW t; HCkBinDataW bd; // This example assumes the Chilkat FTP2 API to have been previously unlocked. // See FTP2 Unlock Sample for sample code. ftp = CkFtp2W_Create(); CkFtp2W_putHostname(ftp,L"www.my-ftp-server.com"); CkFtp2W_putUsername(ftp,L"mFtpLogin"); CkFtp2W_putPassword(ftp,L"myFtpPassword"); CkFtp2W_putAuthTls(ftp,TRUE); CkFtp2W_putPassive(ftp,TRUE); // Connect and login to the FTP server using TLS. success = CkFtp2W_Connect(ftp); if (success != TRUE) { wprintf(L"%s\n",CkFtp2W_lastErrorText(ftp)); CkFtp2W_Dispose(ftp); return; } // We'll read the incoming data chunk-by-chunk and write to an output file. fac = CkFileAccessW_Create(); success = CkFileAccessW_OpenForWrite(fac,L"qa_output/penguins2.jpg"); if (success != TRUE) { wprintf(L"%s\n",CkFileAccessW_lastErrorText(fac)); CkFtp2W_Dispose(ftp); CkFileAccessW_Dispose(fac); return; } streamObj = CkStreamW_Create(); // Create a task to do the FTP download. t = CkFtp2W_GetFileToStreamAsync(ftp,L"penguins2.jpg",streamObj); if (CkFtp2W_getLastMethodSuccess(ftp) != TRUE) { wprintf(L"%s\n",CkFtp2W_lastErrorText(ftp)); CkFtp2W_Dispose(ftp); CkFileAccessW_Dispose(fac); CkStreamW_Dispose(streamObj); return; } // Start the task in a background thread. CkTaskW_Run(t); bd = CkBinDataW_Create(); while (CkStreamW_getEndOfStream(streamObj) != TRUE) { // Get the next chunk of JPG bytes. CkStreamW_ReadBd(streamObj,bd); // Do something with it.. // In this simple example, we'll just write to the file. CkFileAccessW_FileWriteBd(fac,bd,0,0); // Clear for the next read. CkBinDataW_Clear(bd); } CkFileAccessW_FileClose(fac); CkTaskW_Dispose(t); wprintf(L"Success.\n"); CkFtp2W_Dispose(ftp); CkFileAccessW_Dispose(fac); CkStreamW_Dispose(streamObj); CkBinDataW_Dispose(bd); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.