У меня есть простой пример, который я пытаюсь загрузить текстовым файлом на FTP-сервер. FTP-сервер находится локально на моем компьютере с Windows 10. Я использую FTP-сайт IIS. Когда я подключаюсь через FTP-клиент с той же информацией, я предоставляю свою программу на C ++, я могу добавить test.txt на FTP-сайт. Нет проблем аутентификации, нет проблем с фильтрами расширений файлов, нет проблем с подключением / брандмауэром.
Когда я запускаю свою программу на C ++, возвращается код ошибки 5 (доступ запрещен). Я уверен, что что-то прямо передо мной я не вижу. Пользователь, используемый для подключения в коде, является администратором. Я также изменил его на моего собственного пользователя, который установил IIS и создал каталог FTP, но та же проблема. Вот мой код:
main:
int main()
{
const std::string PathBase = "E:/Test";
const std::string FileName = "test.txt";
file_upload(PathBase, FileName);
}
string_to_wstring:
std::wstring string_to_wstring(const std::string& text)
{
return std::wstring(text.begin(), text.end());
}
file_upload:
BOOL file_upload(std::string FilePath, std::string FileName)
{
std::wstring tmpBase = string_to_wstring(FilePath);
std::wstring tmpName = L"/" + string_to_wstring(FileName);
HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
HINTERNET hFtpSession = InternetConnect(hInternet, L"192.168.65.1", 21, L"testuser", L"password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
BOOL Transfer = FtpPutFile(hFtpSession, &tmpBase[0], &tmpName[0], 0x00000002, 0);
if (!Transfer)
{
std::cout << "Failed to upload" << std::endl;
std::cout << "Error: " << GetLastError() << std::endl;
std::cout << "Response Info: " << InternetGetLastResponseInfoW << std::endl;
}
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
return 0;
}
Мой вывод:
Failed to upload
Error: 5
Response Info: 00007FFFC349CB60
Любая помощь очень ценится!