FtpPutFile不会发送文件

时间:2014-12-10 09:39:41

标签: c++ ftp

我在C++编写了一个FTP客户端,自动将文件发送到FTP服务器。但是当我尝试使用函数FtpPutFile()时出错。我每次使用它时都会从error 2函数GetLastError()no error perror()获得Visual Studio 2010。我知道这不是因为防火墙,因为我可以从命令提示符手动完成。另外,这不是因为我无法连接到ftp服务器,因为我检查了这部分代码中的错误。

我也是在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()它说没有找到它。即使我打印{{1}},我也会得到正确的文件名。

1 个答案:

答案 0 :(得分:1)

GetLastError 2表示&#34;找不到文件&#34;。

我会检查FtpPutFile语句中的源和目标参数的内容。