我正在尝试使用与此类似的代码将文件上传到public API:
my $ua = LWP::UserAgent->new;
sub uploadbox {
my $url = "http://host/token";
my $response = $ua->put($url,
'Content_Type' => 'form-data',
'Content' => [
Filedata => [ "$codename.box", "$codename.box", Content_type => 'application/octet-stream' ]
]
);
}
uploadbox();
此代码运行并退出而不上传任何内容(上传的文件大小为300MB,因此需要时间)。
我是否将正确的参数传递给put子例程? 如何进一步调试?
答案 0 :(得分:0)
我喜欢使用LWP::ConsoleLogger::Easy调试LWP::UserAgent
脚本。 (免责声明:这是我自己的模块之一)。
use LWP::ConsoleLogger::Easy qw( debug_ua );
my $ua = LWP::UserAgent->new;
debug_ua( $ua );
# insert the rest of your code here
现在,您将从请求和打印到终端的响应中获得大量调试信息。这应该有希望给你一个很好的起点来弄清楚发生了什么。
答案 1 :(得分:0)
最后我决定使用curl,我得到一个免费的动态状态行
sub uploadbox {
my ($url) = @_;
my $curl = "curl -X PUT $url --upload-file $codename.box";
$OUTPUT_AUTOFLUSH = 1;
open(CURL, '-|', $curl,) or die "error: $ERRNO";
while (<CURL>) { say; }
}
不是我最自豪的代码,而是......