[C++] Wysyłanie plików na FTP

Odpowiedz Nowy wątek
2009-02-21 16:24
0

Witam!
Mam problem z wysyłaniem plików na serwer. Korzystam z funkcji Wininet.
Fragment kodu:

HINTERNET Int=InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG,0,0,INTERNET_FLAG_PASSIVE);

    if (Int == NULL)
    {
        cout << "1Error: " << GetLastError();
    }
    else
    {
        HINTERNET IntFTP=InternetConnect(Int,"serwer",INTERNET_DEFAULT_FTP_PORT,"login","hasło",INTERNET_SERVICE_FTP,0,0);

    if (IntFTP == NULL)
    {
        cout << "2Error: " << GetLastError();
    }
    else
        {
                int Error = GetLastError();
        if(!FtpOpenFile(IntFTP,"lap.txt",GENERIC_WRITE,FTP_TRANSFER_TYPE_ASCII,0))
            cout << "3Error: " << GetLastError() << endl;
       if (!FtpPutFile(IntFTP, "lol.txt", "/lsoasal2.txt", FTP_TRANSFER_TYPE_ASCII, 0))
          {

           cout << "4Error: "<< GetLastError() << endl;

          }     
         }
        } 

Funkcja GetLastError() zwraca błąd 12003(w miejscu 3Error i 4Error). Na serwerze FTP pojawia się wyznaczony plik, ale jest on pusty. Próbowałem używać różnych serwerów FTP z miernym skutkiem.

W czym leży problem?

Proszę o pomoc.
Pozdrawiam!

Pozostało 580 znaków

2009-02-21 16:39
0

nie wiem, co jest nie tak, ale co do błędu to na MSDN piszą:

ERROR_INTERNET_EXTENDED_ERROR
12003

An extended error was returned from the server. This is typically a string or buffer containing a verbose error message. Call InternetGetLastResponseInfo to retrieve the error text.

Pozostało 580 znaków

2009-02-21 16:51
0

Dziękuję serdecznie!

Wystarczyło zmienić linijkę:

HINTERNET IntFTP=InternetConnect(Int,"serwer",INTERNET_DEFAULT_FTP_PORT,"login","hasło",INTERNET_SERVICE_FTP,0,0);

na:

HINTERNET IntFTP=InternetConnect(Int,"serwer",INTERNET_DEFAULT_FTP_PORT,"login","hasło",INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);

i wszystko działa [browar].

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0