簡體   English   中英

上載具有Perl LWP PUT方法沉默的文件失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM