C++上传文件到ftp

4

我是编程新手,正在尝试将名为“test.txt”的文本文件上传到FTP服务器,但遇到了问题。

这是我的代码:

void nointernet()
{
std::cout << "No internet connection." << std::endl;
}

int upload()
{
HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (!hInternet)
{
    nointernet(); 
}


HINTERNET hFtpSession = InternetConnect(hInternet, "FTPHOST", INTERNET_DEFAULT_FTP_PORT, "FTPUSER", "FTPPASS", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if (!hFtpSession)
{
    InternetCloseHandle(hInternet);
    nointernet(); 

}

FtpPutFile(hFtpSession, "D:/test.txt", "test.txt", FTP_TRANSFER_TYPE_BINARY, 0); 
std::cout << "File Uploaded." << std::endl;
InternetCloseHandle(hFtpSession); 
InternetCloseHandle(hInternet); 
return 0;
}

int main() {
upload();
return 0;
}

欢迎提供任何反馈意见。


错误信息,崩溃?如果没有任何额外的信息,我们无法做任何事情。 - Lasoloz
1个回答

6
我解决了它。如果有人感兴趣,这是代码:
```

我已经解决了。以下是代码,如果有人感兴趣:

```
#include <wininet.h>
#pragma comment(lib, "Wininet")

int upload()
{
    HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    HINTERNET hFtpSession = InternetConnect(hInternet, "HOST", INTERNET_DEFAULT_FTP_PORT, "USER", "PASS", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    FtpPutFile(hFtpSession, "C:/test.txt", "/test.txt", FTP_TRANSFER_TYPE_BINARY, 0);
    std::cout << "File Uploaded." << std::endl;
    InternetCloseHandle(hFtpSession);
    InternetCloseHandle(hInternet);
    return 0;
}

int main() {
    upload();
    return 0;
}

我也会使用INTERNET_FLAG_PASSIVE标志。根据微软的说法(https://msdn.microsoft.com/en-us/library/windows/desktop/aa383770(v=vs.85).aspx),除非FTP托管在Microsoft服务器上,否则需要此标志。 - Michael Haephrati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接