Filou Geschrieben 24. Mai 2006 Geschrieben 24. Mai 2006 Hi, wie kopiert man eine Datei auf einen FTP Server? bCheck = CopyFile("C:\\test.txt","ftp://server/test.txt",TRUE); So gehts nicht.
Bubble Geschrieben 24. Mai 2006 Geschrieben 24. Mai 2006 Natürlich indem Du die Daten unter Verwendung des FTP-Protokolls zum Server sendest. Wenn Du eine fertige Funktion suchst, die Du auch nutzen kannst, ohne viel Ahnung vom FTP-Protokoll selbst zu haben, dann schau Dir z.B. FtpPutFile an.
Filou Geschrieben 26. Mai 2006 Autor Geschrieben 26. Mai 2006 Ich habe mittlerweile etwas mehr heraus gefunden: HINTERNET FTP; HINTERNET TEST; //Datei an FTP Server senden.... FTP = InternetOpen( "ftp://server.net",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC); TEST = InternetConnect(FTP,"ftp://server.net",21,NULL,NULL,INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,NULL); bCheck = FtpPutFile(FTP, "c:\\test","ftp://server.net/test.txt",FTP_TRANSFER_TYPE_UNKNOWN,INTERNET_FLAG_RELOAD); Aber es funktioniert noch nicht ganz. InternetConnect gibt 0x0000000 zurück. Und FtpPutFile = FALSE. Woran könnte das noch liegen?
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 InternetConnect geht jetzt. das Problem war als Ziel muss man nur die IP eingeben ohne ftp://. Aber FtpPutFile tut nicht was es soll. Bin mir bei dem letzten Parameter nicht sicher was das soll... Kann mir da einer helfen bitte? http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/ftpputfile.asp
Klotzkopp Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Was heißt "tut nicht, was es soll"? Rückgabewert? GetLastError()? Der letzte Parameter wird nur benutzt, wenn du mit InternetSetStatusCallback eine Callbackfunktion angegeben hast. Ansonsten kannst du da 0 übergeben.
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Rückgabewert = FALSE. GetLastError gibt mir ein "ò". Weiß aber nicht ob ich die Funktion richtig benutzt hab. Das habe ich nämlich noch nie *schäm* bCheck = FtpPutFile(FTP, "D:\test.txt","test.txt",INTERNET_FLAG_TRANSFER_ASCII,INTERNET_FLAG_RELOAD); CString csError = GetLastError();
Guybrush Threepwood Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 GetLastError gibt ein DWORD zurück wie man der Dokumentation entnehmen kann...
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Uuups.. Dann gibt es 12018 zurück. Und was heißt das dann?
Klotzkopp Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Rückgabewert = FALSE. GetLastError gibt mir ein "ò".GetLastError liefert eine Zahl Der Backslash im zweiten Parameter muss auf jeden Fall doppelt sein. \t ist die Escapesequenz für ein Tab-Zeichen.
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Sorry hab ich hier falsch gepostet. Im Code sind es zwei \\. Aslo der Letzte Parameter ist definitiv falsch. Da muss InternetSetStatusCallback rein. Glaub ich... Mal sehen ob ich rausbekomme wie....
Klotzkopp Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Sorry hab ich hier falsch gepostet. Im Code sind es zwei \\. Aslo der Letzte Parameter ist definitiv falsch.Hast du gelesen, was ich dazu geschrieben habe? Übrigens, 12018 ist ERROR_INTERNET_INCORRECT_HANDLE_TYPE. Gib da mal TEST an, nicht FTP.
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 So sieht das ganze aus: HINTERNET FTP; FTP = InternetOpen( "[COLOR="darkred"]ftp://server.net[/COLOR]",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC); [COLOR="SeaGreen"]// HANDLE, IP, PORT, BENUTZER, PASSWORT[/COLOR] InternetConnect(FTP, "[COLOR="darkred"]server.net[/COLOR]",21,NULL,NULL,INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE,NULL); bCheck = FtpPutFile(FTP, "[COLOR="DarkRed"]D:\\test.txt[/COLOR]","[COLOR="darkred"]test.txt[/COLOR]",INTERNET_FLAG_TRANSFER_ASCII,[B]NULL[/B]); Es meinst warscheinlich das Handle FTP. Aber mir ist immer noch nicht klar was ich als letzten Parameter bei FtpPutFile eingeben muss wo jetzt NULL steht.
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Bei InternetOpen ist der erste Parameter ja auch falsch. Er will das hier: lpszAgent [in] Pointer to a null-terminated string that specifies the name of the application or entity calling the WinINet functions. This name is used as the user agent in the HTTP protocol. Was bedeutet das denn?
Klotzkopp Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Es meinst warscheinlich das Handle FTP.Wie ich schon schrieb: Setz da mal TEST ein.
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Man geil das Klappt!!! :e@sy :e@sy :e@sy :e@sy :e@sy :e@sy Echt SUPER!! Du bist der absolute C++ King :bimei
gordon1020 Geschrieben 25. Juni 2006 Geschrieben 25. Juni 2006 HINTERNET FTP; FTP = InternetOpen( "ftp://lalala.de",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,INTERNET_FLAG_ASYNC); // HANDLE, IP, PORT, BENUTZER, PASSWORT InternetConnect(FTP, "lala.de",21,"username","passwort",INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE,NULL); FtpPutFile(FTP, "D:\\lala.exe","htdocs\\lala.exe",INTERNET_FLAG_TRANSFER_ASCII,NULL); kann mir einer erklären warum er es nicht hochläd?
Filou Geschrieben 25. Juni 2006 Autor Geschrieben 25. Juni 2006 Ich würde es mal ohne den Unterordner htdocs versuchen. Nur zum Test! Kann aber auch an Den Einstelllungen vom Server liegen oder an einer Firewall. Ich hatte auch ein paar Probleme, bis ich den Server richtig konfiguriert hatte.
gordon1020 Geschrieben 25. Juni 2006 Geschrieben 25. Juni 2006 daran liegts ned -.- ich bekomme bei FtpPutFile den fehlercode 6 (ungültiges handle)
Klotzkopp Geschrieben 25. Juni 2006 Geschrieben 25. Juni 2006 Hast du den Thread nicht gelesen? Das ist genau dasselbe Problem, das Filou auch hatte. Du musst bei FtpPutFile das Handle angeben, dass du bei InternetConnect als Rückgabewert bekommst (und momentan wegwirfst).
gordon1020 Geschrieben 25. Juni 2006 Geschrieben 25. Juni 2006 jop, jetzt habe ich den handle lol (lol = InternetConnect(...)) angegeben. aber jetzt bekomm ich nen fehlercode 12003 was kann ich dagegen tun
Klotzkopp Geschrieben 26. Juni 2006 Geschrieben 26. Juni 2006 aber jetzt bekomm ich nen fehlercode 12003Das ist, wie man in wininet.h nachlesen kann, ERROR_INTERNET_EXTENDED_ERROR. Die MSDN Library sagt dazu: ERROR_INTERNET_EXTENDED_ERROR 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.
gordon1020 Geschrieben 26. Juni 2006 Geschrieben 26. Juni 2006 ok jetzt ladet er auch hoch nur nächstes problem, er läd nur 147 kb hoch. warum?
Klotzkopp Geschrieben 26. Juni 2006 Geschrieben 26. Juni 2006 warum?Sonnenflecken. Im Ernst, wie soll dir jemand helfen, wenn du so überhaupt gar keine Fehlerbeschreibung ablieferst? P.S.: lädt
gordon1020 Geschrieben 26. Juni 2006 Geschrieben 26. Juni 2006 es klappt eh alles, fehlercode wird 0 zurückgegeben, nur am ftp ist die datei 147 kb groß HINTERNET hFtp = InternetOpen("ftp://server.de", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); cout << GetLastError( )<<endl; hFtp = InternetConnect(hFtp, "server.de", 21, "user", "pass", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL); cout << GetLastError( )<<endl; FtpPutFile(hFtp, "D:\\asp100.zip", "htdocs//lala.zip", FTP_TRANSFER_TYPE_BINARY, NULL); cout << GetLastError( )<<endl; InternetCloseHandle(hFtp);
Klotzkopp Geschrieben 26. Juni 2006 Geschrieben 26. Juni 2006 es klappt eh alles, fehlercode wird 0 zurückgegeben,Nur am Rande: GetLastError kann man nur dann sinnvoll aufrufen, wenn vorher etwas schiefgegangen ist. nur am ftp ist die datei 147 kb großUnd? Ist das zu viel oder zu wenig? Wie groß ist die Quelldatei? Stimmt der Inhalt, oder steht da nur Quatsch drin?
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden