c语言 自动下载 ftp,C语言自动下载ftp文件程序

由于经常要到一个固定ftp下载几个文件,不想每次都重复登陆选择,因此用C写了一个简单的ftp自动下载程序。

从FTP 134.101.50.23/Mapper/CDMA/ 目录下下载命名以CDMA开始的文件到本地地址。

源代码如下:

#include

#include

#include

#include

CWinApp theApp;

void main()

{

int iFileCnt =0;

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

{

return;

}

// create a session object to initialize WININET library

CInternetSession sess(_T("MyProgram/1.0"));

CFtpConnection* pConnect = NULL;

try

{

// Request a connection to ftp Default with username = ANONYMOUS

// and password set to the machine name @ domain name

pConnect = sess.GetFtpConnection(_T("134.101.50.23"));

// use a file find object to find files

CFtpFileFind finder(pConnect);

//Set FTP directory

pConnect->SetCurrentDirectory(_T("/Mapper/CDMA"));

CString strDirName;

pConnect->GetCurrentDirectoryAsURL(strDirName);

//  printf("GetCurrentDirectoryAsURL is : %s/n",strDirName);

CString strFileName,strObjFile;

//Set the directory where object file is put

CString strObjDir(_T("C:/Documents and Settings/Han Teng/桌面/CDMA map/"));

// Find files start with name CDMA

BOOL bWorking = finder.FindFile(_T("CDMA*"));

BOOL bGetFile;

while (bWorking)

{

bWorking = finder.FindNextFile();

//   printf("GetFileURL: %s/n", (LPCTSTR) finder.GetFileURL());

strFileName = finder.GetFileURL();

strFileName = strFileName.Right(strFileName.GetLength()-strDirName.GetLength()-1);

//   printf("FileName : %s/n", strFileName);

strObjFile = strObjDir + strFileName;

//   printf("ObjFile : %s/n", strObjFile);

//Get file

bGetFile = pConnect->GetFile(strFileName,strObjFile,FALSE,

FILE_ATTRIBUTE_COMPRESSED,FTP_TRANSFER_TYPE_BINARY,1);

if(bGetFile == 0)

{

printf("Not get file! %s/n", strFileName);

}

else

{

printf("Get file done! %s/n",strFileName);

iFileCnt++;

}

}

}

catch (CInternetException* pEx)

{

TCHAR sz[1024];

pEx->GetErrorMessage(sz, 1024);

printf("ERROR!  %s/n", sz);

pEx->Delete();

}

printf("%d files is download to local directory!/n",iFileCnt);

// if the connection is open, close it

if (pConnect != NULL)

pConnect->Close();

delete pConnect;

return;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值