Автор Тема: загрузка через Net::FTP  (Прочитано 4148 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн micolo

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
загрузка через Net::FTP
« : 29 Января 2007, 07:27:20 »
У меня такая проблема. Мне нужно сформировать из базы .xls файл и сразу загрузить его по ФТП. Файл формируется, но загружаться по фтп не хочет, т.е. появляется на фтп файл, с нужным название но абсолютно пустой. Думал проблема в том что файл не успевает сфорироваться и начинает закачиваться - ставивил sleep после формировании файла, не помогает. Доступ везде стоит. Дебаг через консоль ошибок не даёт.

Net
::FTP>>> Net::FTP(2.75)
Net::FTP>>>   Exporter(5.58)
Net::FTP>>>   Net::Cmd(2.26)
Net::FTP>>>   IO::Socket::INET(1.29)
Net::FTP>>>     IO::Socket(1.29)
Net::FTP>>>       IO::Handle(1.25)
Net::FTP=GLOB(0x8590880)<<< 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Net::FTP=GLOB(0x8590880)<<< 220-You are user number 4 of 10 allowed.
Net::FTP=GLOB(0x8590880)<<< 220-Local time is now 22:32. Server port21.
Net
::FTP=GLOB(0x8590880)<<< 220-IPv6 connections are also welcome on this server.
Net::FTP=GLOB(0x8590880)<<< 220 You will be disconnected after 15 minutes of inactivity.
Net::FTP=GLOB(0x8590880)>>> user test
Net
::FTP=GLOB(0x8590880)<<< 331 User alserftp OKPassword required
Net
::FTP=GLOB(0x8590880)>>> PASS ....
Net::FTP=GLOB(0x8590880)<<< 230-User alserftp has group access to:  80
Net
::FTP=GLOB(0x8590880)<<< 230 OKCurrent directory is /
Net::FTP=GLOB(0x8590880)>>> CWD out
Net
::FTP=GLOB(0x8590880)<<< 250 OKCurrent directory is /out
Net
::FTP=GLOB(0x8590880)>>> CWD code
Net
::FTP=GLOB(0x8590880)<<< 250 OKCurrent directory is /out/code
Net
::FTP=GLOB(0x8590880)>>> TYPE I
Net
::FTP=GLOB(0x8590880)<<< 200 TYPE is now 8-bit binary
Net
::FTP=GLOB(0x8590880)>>> PASV
Net
::FTP=GLOB(0x8590880)<<< 227 Entering Passive Mode (192,168,0,2,44,241)
Net::FTP=GLOB(0x8590880)>>> STOR TEST_REPORT280107.xls
Net
::FTP=GLOB(0x8590880)<<< 150 Accepted data connection
Net
::FTP=GLOB(0x8590880)<<< 226 File successfully transferred
Net
::FTP=GLOB(0x8590880)>>> QUIT
Net
::FTP=GLOB(0x8590880)<<< 221-GoodbyeYou uploaded 0 and downloaded 0 kbytes.
Net::FTP=GLOB(0x8590880)<<< 221 Logout.



Уже всё перепробывал - в чём моя ошибка?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
загрузка через Net::FTP
« Ответ #1 : 29 Января 2007, 11:43:42 »
Скрипт, а именно часть отсылки, в студию.
The documentations is your friend

Оффлайн micolo

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
загрузка через Net::FTP
« Ответ #2 : 29 Января 2007, 13:13:06 »


$::dbs DBI->connect("dbi:Pg:dbname=test","test","test",{PrintError => 0});

if (
$DBI::err != 0)
{  print 
$DBI::errstr "\\n";
exit(
$DBI::err);
}

my $workbook Spreadsheet::WriteExcel->new("/home/test/REPORT".$curr.".xls");
$worksheet   $workbook->addworksheet();
$format      $workbook->addformat();

$format->set_bold();
$format->set_align(\'center\');

$worksheet->set_column(0, 0,  30);
$worksheet->set_column(0, 1,  30);
$worksheet->set_column(0, 2,  30);

$worksheet->write(0, 0, decode(\'cp1251\', \'Поле1\'), $format);
$worksheet->write(0, 1, decode(\'cp1251\', \'Поле2\'), $format);
$worksheet->write(0, 2, decode(\'cp1251\', \'Поле3\'), $format);

$query = "Select distinct code_product from report where time_create>".$time1." and time_create<".$time2."";
$sth = $dbs->prepare($query);
$rv = $sth->execute();


my $fo=1;
while ($ref = $sth->fetchrow_hashref())
{

($tablename) = ($ref->{\'code_product\'});


$querys = "Select count(*) from report where code_product=".$tablename." and time_create>".$time1." and time_create<".$time2."";
$sths = $dbs->prepare($querys);
$rv = $sths->execute();
@refs = $sths->fetchrow_array();

$worksheet->write($fo, 0, "$tablename");
$worksheet->write($fo, 1, $refs[0]);

$fo++;
}
$sths->finish();
$::dbs->disconnect();

$ftp = Net::FTP->new("192.168.0.1",Timeout => 30, Debug => 1, Passive =>1) ||  die "Can\'t connect to ftp server.\\n";

$ftp->login(\'test\',\'test\') || "error.\\n";

 $ftp->cwd("out");
 $ftp->cwd("code");

#set the mode to ascii
#$ftp->ascii();
   #закачка на фтп
$ftp->binary();
$ftp->put(\'/home/test/REPORT\'.$curr.\'.xls\')  or die "get failed ", $ftp->message;

#отключение от фтп
$ftp->quit();



Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
загрузка через Net::FTP
« Ответ #3 : 29 Января 2007, 13:20:51 »
print -s \'/home/test/REPORT\'.$curr.\'.xls\';
перед
$ftp->put(\'/home/test/REPORT\'.$curr.\'.xls\')  or die "get failed ", $ftp->message;
выставь, какой размер?
Неплохо также закрыть workbook после оканчания создания документа перед отправкой на фтп
$workbook->close();
The documentations is your friend

Оффлайн micolo

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
загрузка через Net::FTP
« Ответ #4 : 29 Января 2007, 13:32:38 »
спасибо большое
$workbook->close(); - помог :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28