显示LWP::UserAgent下载进度

9

我正在使用LWP::UserAgent和:content_file选项,将一个大文件直接下载到文件中。

以下是我的代码简化版本:

require LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->timeout(3600);
$ua->env_proxy;

my $response = $ua->get(
    'http://example.com/largefile.xml',
    :content_file   => 'path/to/file/largefile.xml'
);

if ($response->is_success) {
    print "File downloaded\n";
}
else {
    die $response->status_line;
}

有没有办法显示下载状态的百分比?(或类似于wget输出的内容)
10% [===>                                  ]  65.120.154  527K/s 
2个回答

10

来自该模块的文档

$ua->show_progress

$ua->show_progress( $boolean )

获取/设置一个值,表示在处理请求时是否应在终端上显示进度条。默认值为FALSE。


此外,请查看ActivePerl安装中/bin/lwp-download的源代码。 - Kostia Shiian
3
lwp-download 不仅适用于 ActivePerl,它也可以从 CPAN 获取(https://metacpan.org/pod/distribution/libwww-perl/bin/lwp-download)。 - Dave Cross

3

谢谢!我也会看看它们。 - nanocv
LWP::UserAgent::ProgressBar提供了一个进度条,非常符合OP的想法。但如果这是一个问题(例如,对于可移植性),它不太可能已经安装好。 - Randall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接