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, botów: 0