C++ 使用 WinINet 上传到 FTP 服务器
Posted
技术标签:
【中文标题】C++ 使用 WinINet 上传到 FTP 服务器【英文标题】:C++ Uploading to an FTP server with WinINet 【发布时间】:2014-02-24 12:49:42 【问题描述】:我已经搜索了 2 个小时,但我似乎无法弄清楚如何简单地使用 FTP 服务器上传文件。
我更喜欢使用 WinINet,因为我是 C++ 和 Microsoft Visual Studio 的新手(我不是编程新手,只是 C++)
我真正需要的只是一个如何使用 FTP 服务器上传文件的工作示例。在过去的 2 个小时里,我一直在网上搜索,但我找不到任何东西。
我尝试了很多不同的库和东西,但似乎都没有用,而且很多已经过时了。
无论如何,如果您愿意分享有关使用 FTP 通过 C++ 上传文件的知识、链接或经验,我将不胜感激。
谢谢 -Alex Benoit
【问题讨论】:
查看msdn.microsoft.com/en-us/library/windows/desktop/… 获取大量示例代码(不难找到) 我去过那里。我已经浏览了大约 200 页不同的页面..我已经阅读了很多。我似乎做对了一切,但方法太多了,可能的错误也太多了。 如果您的意思是可能的运行时错误(而不是编程错误):是的,没有其他示例可以解决该问题。整个 Winapi 的大部分设计方式是每个命令大约有 >100(至少“很多”)不同的可能错误。关于编程错误:如果代码太混乱,在同一个站点上的图表显示了您需要的核心功能的名称、顺序等。剩下的就是阅读这个函数的文档,了解可能的参数、返回值等。 【参考方案1】:想通了。这是我正在使用的代码
#include <wininet.h>
#pragma comment(lib, "Wininet")
void FileSubmit()
HINTERNET hInternet;
HINTERNET hFtpSession;
hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hInternet == NULL)
cout << "Error: " << GetLastError();
else
hFtpSession = InternetConnect(hInternet, "server", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, 0, 0);
if (hFtpSession == NULL)
cout << "Error: " << GetLastError();
else
if (!FtpPutFile(hFtpSession, "C://file.txt", "/file.txt", FTP_TRANSFER_TYPE_BINARY, 0))
cout << "Error: " << GetLastError();
【讨论】:
这可能不适用于 Windows 7 或更低版本。 WinINet 有问题。我相信它实际上是通过昨晚更新为 Windows 8.1 修复的,但这只是对 Windows 8.1 的修复,不幸的是 Windows 7 也不是。 什么问题?我找到了你的答案并打算使用它!以上是关于C++ 使用 WinINet 上传到 FTP 服务器的主要内容,如果未能解决你的问题,请参考以下文章
FTP 异步操作上的 ERROR_IO_PENDING [Wininet C++]
C++ WinInet InternetCloseHandle 崩溃
尝试使用 wininet 将文件上传到 FTP 时遇到问题 [Id 返回 1 退出状态]