vc实现ftp下载

BOOL bRes;

     HINTERNET hInternet;
     HINTERNET hConnect;
     hInternet = InternetOpen("A3GS Sample", 
         INTERNET_OPEN_TYPE_DIRECT, 
         NULL, 
         NULL, 
         INTERNET_FLAG_NO_CACHE_WRITE);
     if ( NULL == hInternet )
     {
         printf( "InternetOpen Error:%d/n", GetLastError() );
         return 0;
     }
     hConnect  = InternetConnect(hInternet, 
         ftp地址, 
         INTERNET_DEFAULT_FTP_PORT, 
         用户名, 
         密码, 
         INTERNET_SERVICE_FTP, 
         INTERNET_FLAG_EXISTING_CONNECT || INTERNET_FLAG_PASSIVE,
         0 );

     if ( NULL == hInternet )
     {
         printf( "InternetConnect Error:%d/n", GetLastError() );
         InternetCloseHandle(hInternet);
         return 0;
     }
//设置ftp的文件所在的文件夹
     FtpSetCurrentDirectory (hConnect, "./pub/download/bt/") ;

     bRes = FtpGetFile(hConnect, 

         ftp的文件名, 

         下载后存放本地的文件名(加路径), 

         FALSE, 

         FILE_ATTRIBUTE_ARCHIVE, 

         FTP_TRANSFER_TYPE_UNKNOWN, 

         0);

     if ( bRes == 0 )
     {
         printf( "FtpGetFile Error:/n", GetLastError() );

     }else{
         printf( "FtpGetFile Success!/n" );

     }
     InternetCloseHandle(hConnect);
     InternetCloseHandle(hInternet);

补充一些API函数
 InternetOpen 初始化 Win32 internet
InternetConnect 打开一个FTP, HTTP, or Gopher 应用会话
FtpCreateDirectory 在服务器上建立一个新的目录
FtpRemoveDirectory 删除服务器上的一个目录
FtpOpenFile 打开服务器上的一个文件进行读写
FtpGetFile 接收指定的文件并且在本地建立它
FtpPutFile 发送指定文件到服务器
FtpDeleteFile 删除服务器上一个指定的文件
FtpSetCurrentDirectory 设置服务器上当前的工作目录
FtpGetCurrentDirectory 返回服务器当前的工作目录
FtpCommand 发送命令到服务器
FtpFindFirstFile 返回文件信息。放在 WIN32_FIND_DATA 结构中
InternetFindNextFile 调用 FtpFindFirstFile()后在目录中连续查找
FtpRenameFile 修改服务器上指定的文件的名字 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VC是一种常用的开发平台,可以用来实现各种功能,包括FTP文件下载。在VC中,可以使用WinINet API来实现FTP下载功能。 首先,我们需要在VC中添加相应的头文件和链接库。头文件包括<Windows.h>和<Wininet.h>,链接库为wininet.lib。 接下来,我们需要使用一些关键函数来实现FTP下载。首先是InternetOpen函数,用于初始化WinINet库,并创建一个用于FTP操作的会话句柄。然后,使用InternetOpenUrl函数来打开FTP服务器上的文件,获取到文件的句柄。接着,使用InternetReadFile函数来读取文件内容,并将其写入本地文件中。最后,使用InternetCloseHandle函数关闭句柄,释放资源。 具体实现代码如下所示: ```c++ #include <Windows.h> #include <Wininet.h> void DownloadFTPFile(const char* ftpUrl, const char* localFile) { HINTERNET hInternet = InternetOpen(L"FTPDownloader", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); if (hInternet == NULL) { return; } HINTERNET hFtpSession = InternetOpenUrlA(hInternet, ftpUrl, NULL, 0, INTERNET_FLAG_RELOAD, 0); if (hFtpSession == NULL) { InternetCloseHandle(hInternet); return; } HANDLE hLocalFile = CreateFileA(localFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hLocalFile == INVALID_HANDLE_VALUE) { InternetCloseHandle(hFtpSession); InternetCloseHandle(hInternet); return; } char buffer[4096]; DWORD bytesRead; while (InternetReadFile(hFtpSession, buffer, sizeof(buffer), &bytesRead) && bytesRead > 0) { DWORD bytesWritten; WriteFile(hLocalFile, buffer, bytesRead, &bytesWritten, NULL); } CloseHandle(hLocalFile); InternetCloseHandle(hFtpSession); InternetCloseHandle(hInternet); } int main() { const char* ftpUrl = "ftp://example.com/path/to/ftpfile.txt"; const char* localFile = "C:\\localfile.txt"; DownloadFTPFile(ftpUrl, localFile); return 0; } ``` 以上是一个简单的VC程序,用于实现FTP文件下载功能。在使用时,只需将FTP服务器的URL和本地文件的路径传递给DownloadFTPFile函数即可。程序将会从FTP服务器上下载文件,并保存到本地文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值