проблемы с ftp (indy, ICS и т.д.)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Killerkod, 16 Dec 2010.

  1. Killerkod

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

    Joined:
    1 Aug 2007
    Messages:
    178
    Likes Received:
    113
    Reputations:
    0
    Приветствую. в общем суть такова, пишу программу, заливающую на ftp файлы, бинарники, работал с indy. но вылезла очень нехорошая проблемка:
    все залитые файлы оказываются битыми... т.е. до того как я их залил на сервер, работали отлично, после заливки все файлы битые. ни один не открывается, на несколько килобайт все файлы меньше оригиналов... ктонибудь сталкивался? Если да, то как решить?

    Попробывал библиотеку ICS, такаяже проблема... файлы просто портятся при закачке на сервер... и такое наверное только с бинарниками, попробывал залить картинку, все ок, а exe файлы портятся. этот компонент проверял на стандартном примере от разработчиков ICS что лежит вместе с компонентом. т.е. просто откомпиллировал и все...
    помогите разобраться плз))
     
  2. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    1) проверь режим заливки файла. надо чтобы был бинарный а не текстовый
    2) для теста попробуй залить этот же файл на тотже FTP но через эксплорер или Total Commander или еще что нить. может там просто на серваке что-то не то
    3) Попробуй написать еще на WinInet всё.
     
  3. Killerkod

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

    Joined:
    1 Aug 2007
    Messages:
    178
    Likes Received:
    113
    Reputations:
    0
    ищу примеры на WinInet, но нигде ничего нету... именно надо залить на фтп.


    Попробывал залить через FileZilla на фтп, все ок, файлы залились.
     
    #3 Killerkod, 17 Dec 2010
    Last edited: 17 Dec 2010
  4. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Все нормально заливается. INDY 9
    PHP:
    TIdFTPftp = new TIdFTP(NULL);

    ftp->Username "login";
    ftp->Password "password";
    ftp->Host "moiserver.ru";
    ftp->Passive true;
    ftp->Connect();
    ftp->Put("1.exe""1.exe");
     
  5. Killerkod

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

    Joined:
    1 Aug 2007
    Messages:
    178
    Likes Received:
    113
    Reputations:
    0
    у меня немного другая процедура, но суть таже... Indy 10 Delphi 7

    Code:
    procedure toFTP;
    var
      i:Integer;
    begin
      Form1.idFTP1.Host := Form1.Edit2.Text;
      Form1.idFTP1.UserName := Form1.Edit3.Text;
      Form1.idFTP1.Password := Form1.Edit4.Text;
      Form1.idFTP1.Port:=21;
      Form1.idFTP1.Connect;
      if Form1.idFTP1.Connected then
      begin
       for i:=0 to Form1.lst1.Count-1 do begin
        Form1.idftp1.Put('C:\1\files\'+GetFileNameWOExt(Form1.lst1.Items.Strings[i])+'.exe',GetFileNameWOExt(Form1.lst1.Items.Strings[i])+'.exe', true);
       end;
      Form1.idFTP1.Disconnect; //   отклдючаемся
      end;
    end;

    И всеравно работает плохо, бинарники битые... может у когонить есть код на WinInet? поделитесь)))
     
    #5 Killerkod, 17 Dec 2010
    Last edited: 17 Dec 2010
  6. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Хреново искал значит. В MSDN всё расписано хорошо.

    hInet = InternetOpen
    hFtp = InternetConnect (hInet, ***, INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE, ***)
    FtpPutFile(hFtp, ***)
    InternetCloseHandle(hFtp)
    InternetCloseHandle(hInet )