Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi, wie kopiert man eine Datei auf einen FTP Server?

bCheck = CopyFile("C:\\test.txt","ftp://server/test.txt",TRUE);

So gehts nicht. :(

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.

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?

  • 2 Wochen später...

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();

Uuups..

Dann gibt es 12018 zurück.

Und was heißt das dann?

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....

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.

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?

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

  • 3 Wochen später...


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?

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.

daran liegts ned -.-

ich bekomme bei FtpPutFile den fehlercode 6 (ungültiges handle)

jop, jetzt habe ich den handle lol (lol = InternetConnect(...)) angegeben.

aber jetzt bekomm ich nen fehlercode 12003

was kann ich dagegen tun :P

aber jetzt bekomm ich nen fehlercode 12003
Das 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.

ok jetzt ladet er auch hoch

nur nächstes problem, er läd nur 147 kb hoch. warum?

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);

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?

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.