Remote file size (Content-Length) in LWP::Protocol::ftp
am 16.02.2006 10:41:19 von katzeHi there,
(libwww-perl-5.803)
Following is my code fragment:
....
my $src = "ftp://...";
my $ua = LWP::UserAgent->new ();
my $res = $ua->head ($src);
my $size = $res->headers->content_length;
....
I want to know the remote file size before retrieval. It fails in some
cases with Internal Server Error. Of course, I know that the
Content-Length may be unknown on server and may be omitted.
In LWP::Protocol::ftp, remote file size (Content-Length) is given by
parsing a message from the FTP server.
ftp.pm
232 my $mess = $ftp->message;
233 LWP::Debug::debug($mess);
234 if ($mess =~ /\((\d+)\s+bytes\)/) {
235 $response->header('Content-Length', "$1");
236 }
Some servers return the following message:
LWP::Protocol::ftp::request: Opening BINARY mode data connection for XXX
(78473 bytes).
It's good!
But others (e.g. Pure-FTPd):
LWP::Protocol::ftp::request: Accepted data connection
30880.0 kbytes to download
It's bad :(
Why not use determinant methods, e.g. Net::FTP size method?
--
Visita Inferiora Terrae Rectificando Invenies Occultum Lapidem
SATOU Kazuhito, Ph.D.
Protein Function Team email: katze@gsc.riken.jp
Protein Research Group phone: +81-45-503-9212
RIKEN Genomic Sciences Center fax : +81-45-503-9210
1-7-22 Suehiro, Tsurumi, Yokohama, Kanagawa 230-0045, Japan