Bardzo prosty program do wysyłania plików na FTP

0

Pewnie wielu starych wyjadaczy oburzy się jak zobaczy moją metodę, ale piorytetem była prostota, więc te wszystkie System.nety, Winsocki , POCO i cURLe odpadają.

Nic bardziej prostackiego i prymitywnego nie da się już chyba wymyślić =)

#include <iostream>
#include <Windows.h>


int main(void)
{
	system("chcp 1250");
	system("ftp ftp.jcom.pl");
	
	Sleep(10000);
	
	system("jcom_10364987");
	system("pupcia13"); 
	system("binary");
	system("send \"C:\\zdjęcia\\ółńćżąęół.jpg\" ");
	system("quit");


	return 0;
}

Wy wiecie o co mi chodzi, kompilator VSC++ już nie( Zatrzymuje się przy wpisywaniu loginu). Jak przekazać mu, aby wpisał w cmd.exe : login, hasło, "binary" , "send "C:\zdjęcia\ółńćżąęół.jpg" oraz "quit"? Czyli ogólnie chodzi mi o funkcję która wpisuje ściśle określonego stringa w konsoli oraz taką która symuluje w niej naciśnięcie entera.

0

Powinno chyba być
user jcom_10364987
pwd puprcia13

dalej jest send to chyba juz ok ale mozesz uzyc put

generalnie odpal sobie cmd, pozniej ftp i daj help
pomoc do komend to:
help <komenda>

1

Zrobiłeś to dwa poziomy za wysoko.

Poziom podstawowy to WinBatch / bash.
Poziom wyższy to Python / VBScript - gdy masz dynamiczne elementy skryptu FTP
Poziom 3 - program w C/C++/C#/Java - gdy chcesz coś ukryć lub być niezależny od instalacji.

1

Widzę, że z cULRLem dałeś sobie spokój ;)

Stwórz sobie plik z zawartością:

open ftp.jcom.pl
jcom_10364987
pupcia13
binary
send "C:\zdjŕcia\ˇ│˝Š┐╣ŕˇ│.jpg"
quit

i odpal klienta tak: ftp -s:plik.

Choć sensowniej byłoby użyć funkcji wininet. Coś w tym stylu:

#include <wininet.h> // musisz też dołączyć wininet.lib
...

HINTERNET hInt = InternetOpen("client", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(hInt)
{
	HINTERNET hFTP = InternetConnect(hInt, 
					"ftp.jcom.pl", 
					INTERNET_DEFAULT_FTP_PORT, 
					"jcom_10364987", 
					"pupcia13", 
					INTERNET_SERVICE_FTP, 
					0, 
					0);

	FtpPutFile(hFTP, 
		"C:\\zdjęcia\\plik.jpg", 
		"/plik.jpg", 
		INTERNET_FLAG_TRANSFER_BINARY, 
		0);

	InternetCloseHandle(hFTP);
	InternetCloseHandle(hInt);
}
0

Łolaboga, po co ja się męczyłem z tym cURL skoro jest domyślnie zainstalowana prostsza i lepiej udokumentowana biblioteka? WinInt.h to to czego mi brakowało do szczęścia. Dzięki za pozostałe rady, przydadzą się do pisania skryptów ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1