我在C++
中编写了一个FTP客户端,以自动将文件发送到FTP服务器。但是,当我尝试使用功能FtpPutFile()
时出现错误。每次使用它时,都会从功能error 2
获得GetLastError()
,并从no error
获得perror()
。我知道不是因为防火墙,因为我可以在命令提示符下手动进行操作。另外,这不是因为我无法连接到ftp服务器,因为我已经检查了这部分代码中的错误。
我也在Visual Studio 2010
环境中进行开发,并且将Character Set
设置为“未设置”,因此可以使用string.c_str()
。
因此,唯一可能出错的是我如何调用函数本身。下一部分是我的代码,该代码引用通过FTP
发送文件的功能:
void fileTransfer(const std::string& filename)
{
LPCTSTR pstrServer = TEXT("ip.address");
LPCTSTR pstrUserName = TEXT("user");
LPCTSTR pstrPassword = TEXT("pass");
LPCTSTR lpszLocalFile = (LPCTSTR)filename.c_str();
LPCTSTR lpszNewRemoteFile = (LPCTSTR)filename.c_str();
HINTERNET hSession = InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0);
HINTERNET hService = InternetConnect(hSession, pstrServer, INTERNET_DEFAULT_FTP_PORT, pstrUserName, pstrPassword, INTERNET_SERVICE_FTP, 0, 0);
if(FtpPutFile(hService, filename.c_str(), filename.c_str(), FTP_TRANSFER_TYPE_ASCII, 0))
{
printf("File copied\n");
}
else
{
printf("File not copied\n");
std::cerr << "Error: " << GetLastError() << std::endl;
perror( "Error transfering file" );
putchar('\n');
}
InternetCloseHandle(hService);
InternetCloseHandle(hSession);
}
有人知道这里可能出什么问题吗?因为此代码仅在找到具有特定结构名称的特定类型的文件
.txt
时才运行。但是在FtpPutFile()
中说找不到。即使我打印filename.c_str()
,我也会得到正确的文件名。 最佳答案
GetLastError 2的意思是“找不到文件”。
我会在FtpPutFile语句中检查源和目标参数的内容。
关于c++ - FtpPutFile继续不发送文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27397625/