C ++ WinInet FtpPutFile (), возвращающий код ошибки 5 (доступ запрещен) - PullRequest
1 голос
/ 19 октября 2019

У меня есть простой пример, который я пытаюсь загрузить текстовым файлом на 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

Любая помощь очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...