C
C
FTP Download with Progress Event Callbacks
See more FTP Examples
FTP download with progress event callbacks.Chilkat C Downloads
#include <C_CkFtp2.h>
BOOL ftp_PercentDone(int percentDone)
{
printf("Percent Done: %d\n",percentDone);
return FALSE;
}
void ftp_ProgressInfo(const char *name, const char *value)
{
printf("%s: %s\n",name,value);
}
void ChilkatSample(void)
{
BOOL success;
HCkFtp2 ftp;
BOOL (*fnftpPercentDone)(int percentDone) = ftp_PercentDone;
void (*fnftpProgressInfo)(const char *name, const char *value) = ftp_ProgressInfo;
const char *localFilename;
const char *remoteFilename;
success = FALSE;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
ftp = CkFtp2_Create();
CkFtp2_setPercentDone(ftp, fnftpPercentDone);
CkFtp2_setProgressInfo(ftp, fnftpProgressInfo);
CkFtp2_putHostname(ftp,"ftp.someFtpServer.com");
CkFtp2_putUsername(ftp,"myLogin");
CkFtp2_putPassword(ftp,"myPassword");
// Connect and login to the FTP server.
success = CkFtp2_ConnectOnly(ftp);
if (success != TRUE) {
printf("%s\n",CkFtp2_lastErrorText(ftp));
CkFtp2_Dispose(ftp);
return;
}
success = CkFtp2_LoginAfterConnectOnly(ftp);
if (success != TRUE) {
printf("%s\n",CkFtp2_lastErrorText(ftp));
CkFtp2_Dispose(ftp);
return;
}
// Change to the remote directory where the file is located.
// This step is only necessary if the file is not in the home directory
// of the FTP account.
success = CkFtp2_ChangeRemoteDir(ftp,"junk");
if (success != TRUE) {
printf("%s\n",CkFtp2_lastErrorText(ftp));
CkFtp2_Dispose(ftp);
return;
}
localFilename = "c:/temp/hamlet.xml";
remoteFilename = "hamlet.xml";
// Ensure that we get PercentDone callbacks.
CkFtp2_putAutoGetSizeForProgress(ftp,TRUE);
// Download the file.
success = CkFtp2_GetFile(ftp,remoteFilename,localFilename);
if (success != TRUE) {
printf("%s\n",CkFtp2_lastErrorText(ftp));
CkFtp2_Dispose(ftp);
return;
}
success = CkFtp2_Disconnect(ftp);
printf("File Downloaded!\n");
CkFtp2_Dispose(ftp);
}