今天主要介绍使用wininet的FtpPutFile上传本地文件到FTP,实现比较简单,基本上三个函数就可以搞定。不多说,代码如下:
/*
@szAgent:可以为NULL,或自定义字符串
@szServerName:可以为域名或者IP地址
@szUser:FTP用户名
@szPwd:FTP用户密码
@nPort:FTP使用的端口
@szLocalFile:本地文件完整路径
@szRemoteFile:本地文件上传远程FTP服务器后的文件名
*/
BOOL WINAPI PutFtpFile2(LPCSTR szAgent,LPCSTR szServerName,LPCSTR szUser,LPCSTR szPwd,int nPort,LPCSTR szLocalFile,LPCSTR szRemoteFile)
{
BOOL bRet = FALSE;
HINTERNET hSession = InternetOpen(szAgent,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
if (hSession != NULL)
{
HINTERNET hConnection = InternetConnect(hSession,szServerName,nPort,szUser,szPwd,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if (hConnection != NULL)
{
//可以使用FtpSetCurrentDirectory设置FTP服务器当前目录,"."问用户根目录
if (FtpPutFile(hConnection,szLocalFile,szRemoteFile,FTP_TRANSFER_TYPE_BINARY,0))
bRet = TRUE;
else
bRet = FALSE;
InternetCloseHandle(hConnection);
}
InternetCloseHandle(hSession);
}
return bRet;
}