我在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/

10-11 22:36
查看更多