Oi Mongers,
venho humildemente consultar o vasto conhecimento de vocês em prol da pesquisa
científica.
Preciso consultar o tamanho de um arquivo em um servidor ftp, antes de decidir
se o arquivo deverá ou não ser baixado.
Eu estava usando o LWP::Simple::head($url) para isto, e estava funcionando bem,
até eu ter que usá-lo através de um proxy.
O que acontece é o seguinte, usando sem proxy, eu consigo acessar as
informações sobre tamanho, formato, codificação, etc,
my $downloadfile =
"ftp://hgdownload.cse.ucsc.edu/goldenPath/ce4/database/all_est.txt.gz";
my ($content_type, $document_length, $modified_time, $expires, $server) =
LWP::Simple::head($downloadfile);
--- ou
if (my $res = LWP::Simple::head($downloadfile)) {
print "$downloadfile ok\n"; ### debug
p($res->{_headers});
} else {
print "$downloadfile not available\n"; ### debug
}
--- e quando uso
use LWP::Simple qw($ua head);
$ua->proxy([qw(http ftp wais)], 'http://10.46.10.19:3129');
para definir o proxy, ele não retorna estas informações.
Se eu mandar imprimir $res->{_headers}, tenho isso:
--- rodando sem proxy
HTTP::Headers {
public methods (38) : as_string, authorization, authorization_basic, clear,
client_date, content_encoding, content_is_html, content_is_text,
content_is_xhtml, content_is_xml, content_language, content_length,
content_type, content_type_charset, date, expires, from, header,
header_field_names, if_modified_since, if_unmodified_since, init_header,
last_modified, new, proxy_authenticate, proxy_authorization,
proxy_authorization_basic, push_header, referer, referrer,
remove_content_headers, remove_header, scan, server, title, user_agent,
warning, www_authenticate
private methods (5) : _basic_auth, _date_header, _header, _process_newline,
_sorted_field_names
internals: {
client-date => "Fri, 08 Mar 2013 19:33:58 GMT",
client-request-num => 1,
content-encoding => "gzip",
content-length => 14169205,
content-type => "text/plain",
last-modified => "Mon, 14 Mar 2011 16:52:05 GMT",
server => "FTP Server"
}
}
--- com proxyHTTP::Headers {
public methods (38) : as_string, authorization, authorization_basic, clear,
client_date, content_encoding, content_is_html, content_is_text,
content_is_xhtml, content_is_xml, content_language, content_length,
content_type, content_type_charset, date, expires, from, header,
header_field_names, if_modified_since, if_unmodified_since, init_header,
last_modified, new, proxy_authenticate, proxy_authorization,
proxy_authorization_basic, push_header, referer, referrer,
remove_content_headers, remove_header, scan, server, title, user_agent,
warning, www_authenticate
private methods (5) : _basic_auth, _date_header, _header, _process_newline,
_sorted_field_names
internals: {
client-date => "Fri, 08 Mar 2013 19:36:13 GMT",
client-peer => "10.46.10.19:3129",
client-response-num => 1,
connection => "close",
date => "Fri, 08 Mar 2013 19:35:52 GMT"
}
}
Ele simplesmente não cria/recebe content-encoding, content-length,
content-type, last-modified e server.
Só o que eu preciso mesmo é ocontent-length.
By the way, o LWP::UserAgent head() não me informa o tamanho do arquivo. Pelo
menos não nos meus testes.
Vocês conhecem alguma outra maneira de obter a informação de tamanho do arquivo
sem ter que baixá-lo?
Acessando o directory listing também não dá, porque através do proxy, o formato
que ele retorna varia em cada sistema (pelo menos foi o que eu observei. me
corrijam se eu estiver errada).
Obrigada!
Abraços,
Nicole_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm