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. Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
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. Zitieren
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(); Zitieren
Guybrush Threepwood Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 GetLastError gibt ein DWORD zurück wie man der Dokumentation entnehmen kann... Zitieren
Filou Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Uuups.. Dann gibt es 12018 zurück. Und was heißt das dann? Zitieren
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. Zitieren
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.... Zitieren
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. Zitieren
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. Zitieren
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? Zitieren
Klotzkopp Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Es meinst warscheinlich das Handle FTP.Wie ich schon schrieb: Setz da mal TEST ein. Zitieren
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 Zitieren
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? Zitieren
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. Zitieren
gordon1020 Geschrieben 25. Juni 2006 Geschrieben 25. Juni 2006 daran liegts ned -.- ich bekomme bei FtpPutFile den fehlercode 6 (ungültiges handle) Zitieren
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). Zitieren
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 Zitieren
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. Zitieren
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? Zitieren
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 Zitieren
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); Zitieren
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? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.