Отправка файла на ftp сервер(WinAPI) [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Dr.KoD, 17 Apr 2008.

  1. Dr.KoD

    Dr.KoD Elder - Старейшина

    Joined:
    1 Mar 2008
    Messages:
    68
    Likes Received:
    22
    Reputations:
    1
    Соединение реализовал, все нормуль подключается, а вот передать файл не получается, подскажите как правильно передать файл(название файла и собственно его содержимое(использую обычный текстоваый файл))? за ранее благодарствую!!! :)
     
  2. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Покажи как пытаешься передать файл, и если не "ПРИВАТНО :d" весь код отправки на ftp
     
  3. hackconnect

    hackconnect Elder - Старейшина

    Joined:
    8 Mar 2007
    Messages:
    49
    Likes Received:
    5
    Reputations:
    0
    http://athena.vvsu.ru/docs/tcpip/rfc/rfc959.txt
    http://book.itep.ru/4/45/ftp_454.htm
     
  4. Dr.KoD

    Dr.KoD Elder - Старейшина

    Joined:
    1 Mar 2008
    Messages:
    68
    Likes Received:
    22
    Reputations:
    1
    Ну я сначало пытался, прочитать файл, записать в буфер прочтеное и потом это безобразие передать на ftp, но потом понял, что делаю не то, нужно еще как то название файла передать, а не просто данные пихнуть, ничего великого в коде нема
    Code:
    fName:='syslog.txt';    
    AssignFile(f, fName);
    {$I-}
    Reset(f);
    {$I+}
    while not EOF(f) do
    begin
    readln(f,buf);
    //.....
    sendbuff:=buf;
    send(s, sendbuff[1], length(sendbuff),0);
    Это я так сказать накатал, по памяти прям тут, т.к. ща у мну отрубали свет и часть моей работы ушла в небытие, но думаю этот код бред. :D
    Еще есть функция на WinSock2 TransmitFile, она передает файл целиком, но пока я не въехал как ей пользоваться(примеров не нашел). Полазив по форумам пришел к заключению, что народ только пользуется индейцами и библиотекой WinInet, а про WinSock никто ниче не слышал и никто ниче незнает :( :mad: ,
    Вот кстати кусочек кода, который отправляет файл на фтп с помощью WinInet, мож кому пригодится(а то я встречал подобный код только "размазанный" на "пару километров" :D а это так сказать "мини бикини" :D :
    Code:
    procedure Sendfile;
    begin
       InetHandle := InternetOpen(PChar('FTP'), 0, nil, nil, 0);
        FtpHandle := InternetConnect(InetHandle, PChar('ftp.xxxxxx.ru'), 21, PChar('FTPLogin'),
            PChar('FTP_Password'), INTERNET_SERVICE_FTP, 0, 255);
         if not Assigned(FtpHandle) then
          InternetCloseHandle(InetHandle)
       else
    
         try
            FtpPutFile(FtpHandle, PChar('файл который хотим отправить'), PChar('имя файла на сервере'),
            FTP_TRANSFER_TYPE_BINARY, 255);
            except
    
         end;
     
  5. hackconnect

    hackconnect Elder - Старейшина

    Joined:
    8 Mar 2007
    Messages:
    49
    Likes Received:
    5
    Reputations:
    0
    бред сивой кобылы - гугль/читай.

    просто он наверно был напичкан доп-функционалом.


    и описание протокола почитай сначала, прежде чем его кодить
     
  6. Dr.KoD

    Dr.KoD Elder - Старейшина

    Joined:
    1 Mar 2008
    Messages:
    68
    Likes Received:
    22
    Reputations:
    1
    ну ткни меня носом в тот форум где гугль показал, что там есть нормальный фтп клиент, написанный на WinSokAPI, кроме опять же изъежженного исходника из этой статьи "FTP клиент своими руками", ничего путевого и нету(ну по крайней мере я не нашел).
     
  7. hackconnect

    hackconnect Elder - Старейшина

    Joined:
    8 Mar 2007
    Messages:
    49
    Likes Received:
    5
    Reputations:
    0
    Dr.KoD
    юзаешь вининет либо пишешь на сокетах сам. в чем проблема? или гугл 0дей инфу о протоколе скрыл? так вон я тебе скока ссылок дал. сиди-изучай.