FtpPutFile() in Schleife



  • Hallo,

    Ich krieg es einfach nicht gebacken ne Datei in Abständen hochzuladen.

    Hier erstmal der Source:

    #include <windows.h>
    #include <wininet.h>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    void upload(void);
    
    int main()
    {
        string file = "C:\\upload.txt";
        ofstream output;
        for(int i=1; i<=5; i++)
        {
            output.open(file.c_str(), ios_base::out);
            if(!output)
            {
                MessageBox(NULL, "Datei konnte nicht geoeffnet werden", "Fehler", MB_OK);
                return -1;
            }
            output << i;
            output.close();
            // 1 Minute warten
            Sleep(60000);
            cout << i << ". Upload" << endl;
            upload();
        }
        MessageBox(NULL, "Dateien erfolgreich hochgeladen", "Info", MB_OK);
        return 0;
    }
    
    void upload()
    {
        HINTERNET hOpen, hConnection;
    
        hOpen = InternetOpen("FTP Upload", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    
        hConnection = InternetConnect(hOpen, "mein.ftp.server", INTERNET_DEFAULT_FTP_PORT,
                                         "user", "passwort", INTERNET_SERVICE_FTP, 0, 0);
    
        FtpPutFile(hConnection, "C:\\upload.txt", "//upload.txt",
                      FTP_TRANSFER_TYPE_ASCII, 0);
    
        InternetCloseHandle(hConnection);
        InternetCloseHandle(hOpen);
    }
    

    Normal müssten doch 5 Dateien hochgeladen werden...

    Die erste Datei hat den Inhalt "1"
    Die zweite Datei überschreibt die erste mit dem Inhalt "2"
    Etc.

    Aber es wird immer nur die erste Datei hochgeladen und danach passiert garnichts mehr.
    Ausserdem sehe ich keinen Inhalt, wenn ich die hochgeladene Datei mit dem Browser ausrufe 😕

    Was mache ich falsch?



  • Hm.. keiner ne Idee woran das liegen könnte?



  • Du könntest mal versuchen, vor dem Aufruf von FtpPutFile die Datei mit FtpDeleteFile zu löschen.

    Falls das noch nicht hilft bzw. als allg. Tipp: Rückgabewerte kontrollieren und ggf. mit GetLastError noch näher nachschauen, was nicht geklappt hat.



  • flenders schrieb:

    Rückgabewerte kontrollieren und ggf. mit GetLastError noch näher nachschauen, was nicht geklappt hat.

    👍
    Das sollte man IMHO machen, bevor man hier fragt.



  • Alles klar dann mal thx für den Tipp!

    @MFK: Man sollte es aber erst vorher wissen 😉



  • Wolfspider schrieb:

    @MFK: Man sollte es aber erst vorher wissen 😉

    Das weiß man, wenn man in die Dokumentation sieht. Das sollte man übrigens auch vorher tun.



  • Dann solltest du mal vorher bedenken, dass dieses Forum da ist, um anderen zu helfen...
    Oder meinste jeder liest sich hier die Dokumentation durch bzw. hat Zeit dazu?

    ➡ Mein letzter Post zu dieser sinnlosen Unterhaltung


Anmelden zum Antworten