[英]Uploading a file with perl LWP PUT method silency fails
我正在嘗試使用類似於以下代碼的方式將文件上傳到公共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子例程? 如何進一步調試呢?
我喜歡使用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
現在,從打印到終端的請求和響應中,您將獲得大量調試信息。 希望這可以為您提供一個很好的起點,以了解正在發生的事情。
最后,我只是決定使用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; }
}
不是我最引以為豪的代碼,但是...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.