[PERL] При отправке на ФТП файл меняет свой размер

evilpro
Дата: 24.07.2006 19:32:47
Есть внешний ФТП. Есть внутренняя прокся.
Пытался отправлять файл через proxy с помощью NET::FTP - не получилось(не знаю как. ранее задавал вопрос - ответа не получил. Видать это очень сложно).
Решил делать через HTTP::Request. Алгоритм рабочий, но возникла проблема в передаче архивов. Файл закачивается , но архив повреждается. При сравнении, оригинала с файлом закаченном на фтп, обнаружилось, что proxy(unixовый какой не знаю) меняет один байт. А именно 0D 0A (#13#10) заменяет на 0A (#10).
Вот такая беда.
Кто знает как решить эту или схожую проблему?
Может все-таки кто знает как настроить отправку через прокси с помощью NET::FTP? Достаточно вырезки из рабочего скрипта.



  • Вот пример функции отправки файла через прокси.
    sub send_ftp# параметры 1-адресс;2-файл;3-Код группы
    {
    copy($adir.$_[1],$adir.$copy_ftp.$_[1]);
    my $ua = new LWP::UserAgent;

    my $login = $_[0];
    $login =~s/\|/@/;
    $login =~s/\|/@/;
    print $login."\n";
    print $_[1]."\n";
    $ua->proxy(['http','ftp'], 'http://login:password@proxy_ip:3128/')
    or die send_alert('E','error connect proxy(ftp)');

    my $stats = stat($_[1]);
    my $fileSize = $stats->size;
    my $buf;

    open(FH, $_[1]) or die send_alert('E','error open file(ftp)');
    read(FH, $buf, $fileSize) or die send_alert('E','error read file(ftp)');

    my $req = HTTP::Request->new("PUT", 'ftp://'.$login.'/'.$_[1])
    or die send_alert('E','error connect to ftp(ftp)');
    $req->content($buf);
    # or send_alert('E','error content file(ftp)');
    my $response = $ua->request($req)
    and send_alert('F',$_[0].'<=Copy ftp OK.');
    close(FH);
    mkdir($adir.$ar.$_[2]);
    move($adir.$_[1],$adir.$ar.$_[2].'/'.$_[1]);
    }
  • pamir
    Дата: 24.07.2006 21:31:54
    (теоретизирую, на основе симптомов)
    А нет ли у функций возможности указать, что идет работа с бинарным файлом, а не с текстовым. Кто-то из них явно считает, что это текст и меняет под себя. Мож параметр какой при пересылке есть?
    hell
    Дата: 24.07.2006 21:50:57
    pamir
    (теоретизирую, на основе симптомов)
    А нет ли у функций возможности указать, что идет работа с бинарным файлом, а не с текстовым. Кто-то из них явно считает, что это текст и меняет под себя. Мож параметр какой при пересылке есть?


    Именно.

    У фтп есть несколько режимов. Нужен - binary.
    А это сейчас - text :-)
    evilpro
    Дата: 25.07.2006 00:16:48
    пытался через header задать тип контента бинарный - не помогло , либо кривые руки
    Anjey aka PM
    Дата: 25.07.2006 18:58:15
    комманда ФТП серву есть: mode кажись