Auf FTP-Server kopieren



  • Ok, das habe ich gemacht.

    Allerdings is das ja sau kompliziert!!
    Was will den InternetOpen alles für Parameter?
    Ich verstehe das nicht ganz... Und ich weiß ja nicht was ich angeben muss wenn ich auf einen FTP-Server zugreifen will. Irgendwas mit INTERNET_OPEN_TYPE_PROXY?? Ich weiß es nicht...

    Gibts da kein Beispiel dafür? Aus der MSDN werde ich nicht schlau.
    Soweit bin ich jetzt (und weiß nicht mal obs auch nur in etwa stimmt)

    InternetOpen( "ftp://server.net/",INTERNET_OPEN_TYPE_DIRECT,
    "hier muss irgendwas rein?!","hier auch und zwar ein const char* laut debugger",
    INTERNET_FLAG_ASYNC);
    


  • Laut Doku solltest Du bei deiden NULL eintragen, wenn du nicht einen eigenen proxy verwenden willst.



  • Danke connan!

    Es compliert jetzt ohne Fehlermeldung.
    Aber es kopiert die Datei nicht. Irgendwo muss ich noch nen Fehler in den Paramentern haben.

    //Datei an FTP Server senden....
    InternetOpen( "ftp://server.net/",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC);
    InternetConnect(FTP,"ftp://server.net/",21,NULL,NULL,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,NULL);
    bCheck = FtpPutFile(FTP, "c:\\test.txt","ftp://server.net/test.txt",FTP_TRANSFER_TYPE_UNKNOWN,INTERNET_FLAG_RELOAD);
    


  • Du musst auf jeden Fall:

    HINTERNET FTP = InternetOpen( "ftp://server.net/",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC);
    

    benutzen bevor du FTP in Internetconnect verwendest.

    Falls Du das schon machst, was geben denn die Funktionen zurück?



  • ok, habs geändert.
    nach InternetOpen steht in FTP: 0x00cc0004

    Ich weiß auch nicht ob ich fie Adresse so eingeben muss:
    ftp://server.net/
    oder
    ftp://server.net
    oder
    ftp://server.net/test.txt
    oder is das wurscht?



  • Wenn FTP nicht 0 ist hats eigentlich schon geklappt. Was gibt denn IConnect zurück? Achso, Du musst auch FTP = InternetConnect(...) benutzen, solltest aber vieleicht ein zweites Handle an dieser Stelle einführen.



  • InternetConnect gibt 0x000000 zurück 😞
    Und FtpPutFile gibt FALSE zurück.

    aber ich danke Dir jetzt schon eine Million mal! Allein hätte ich das
    nie hinbekommen!!!

    Irgendwas stimmt also an dem InternetConnect nicht....

    Wenn ich aber am Arbeitsplatz auf mein FTP Server zugreife funktioniert das ohne Benutzername und ohne Kennwort....



  • Dann guck doch einfach mal mit GetLastError() was nicht geht. Laut Doku wird für ftp Verbindungen mit lpszUsername = NULL 'anonymous' als username verwendet und deine e-mail als passwort 😃 . Versuchs doch mal mit einem leeren String "" bzw. obs damit auch von deinem Arbeitsplatz nicht geht. Siehe dazu auch die Tabelle in der SDK-Doku für Internetconnect für den Parameter lpszPassword.



  • Ah das ist ein guter Tip!

    Der Standartbenutzer auf dem Server 2003 ist IUSER_SERVER
    Vielleicht liegts daran. ich lege mal ein Testbenutzer an und probiere ein bissel rum...

    Melde mich später / am Montag wieder!!

    Danke Dir!!!



  • Dann, bis dahin 🙂



  • Hallo!
    Ich hab verzweifelt rumprobiert und bin jetzt ein bisschen weiter.
    InternetConnect hat nicht funktioniert weil man als Ziel nicht "ftp://server.net" eingeben darf sondern nur die IP. Also nur "server.net".

    Aber FtpPutFile funktioniert noch nicht.

    bCheck = FtpPutFile(FTP, "D:\test.txt","test.txt",FTP_TRANSFER_TYPE_ASCII,INTERNET_FLAG_RELOAD);
    DWORD Test = GetLastError();
    

    In Test steht 12018 drin. Aber was heißt das?

    Ich bin mir nicht sicher was ich bei den letzten Parameter von FtpPutFile angeben muss.
    Das ist nur geratenwas ich da stehen hab. Bei dem letzten Parameter hab ich die MSDN überhaupt nicht verstanden. Könnte ihr mir das villeicht übersetzen?

    http://msdn.microsoft.com/library/en-us/wininet/wininet/ftpputfile.asp?frame=true

    PS: In der MSDN steht auch was von InternetWriteFile. Muss ich das vorher noch benutzen?????



  • Sorry, war im Urlaub.

    Was mir als erstes auffällt ist, das Du bei der Pfadangabe zur datei ein \ vergessen hast

    Als nächstes:

    ERROR_INTERNET_INCORRECT_HANDLE_TYPE
    12018
    The type of handle supplied is incorrect for this operation.

    Ist denn das Handle was InternetConnect bzw. InternetOpen zurückgibt != 0 ?


Anmelden zum Antworten