3

ここでファイルサイズのテストは意味がありますか?ダウンロード中に接続を切断しようとしましたが、サイズテストに到達していないようです。

#!/usr/bin/env perl
use warnings; 
use strict;
use 5.012;
use LWP::Simple;

my $url = 'http://www.kernel.org/pub/linux/kernel/v2.6/next/patch-v2.6.34-rc5-next-20100428.bz2';
my $file = 'next_kernel.bz';
my $file_size = '3462166';

my $response = getstore( $url, $file );
if ( is_success $response ) {
    if ( $file_size == -s $file ) {
        say "OK";
    }
    else {
        say "Not OK";
    }
}
4

3 に答える 3

2

テスト コードを実行したいだけの場合は、間違ったファイル サイズを入力して、ダウンロードが "OK" ではないと主張してください。中断された接続で何が起こるかをテストしたい場合は、はるかに大きなファイルが必要です.2342バイトのダウンロードは、ほんの一瞬しかかかりません.

于 2010-04-28T15:02:15.227 に答える
1

これは奇妙です、私はあなたと同じ結果を得ました。解決策はありませんが、ここであなたの問題を少しハッキングしたことを報告します。

何が起こっているかというと、保存されたファイルが予想よりも大きく、接続が切断されていないということです。結果のファイルを目的のサイズで切り捨てた後でも、bunzip2 を実行しようとするとエラーが発生します。

get() メソッドに :content_file パラメータを指定して LWP::UserAgent を使用すると、まったく同じ結果が得られました。同じように $ua オブジェクトに response_data ハンドラを追加します。

しかし、次のコマンドで良い結果が得られました。

GET http://www.kernel.org/pub/linux/kernel/v2.6/next/patch-v2.6.34-rc5-next-20100428.bz2 > next_kernel.bz

また、GET は LWP に基づく lwp-request スクリプトであるため、深く掘り下げたい場合は、そのコードをチェックすることで答えが見つかるかもしれません。

これがお役に立てば幸いです。

于 2010-04-28T17:15:36.757 に答える
0

害はないと思いますがis_success、接続が中止された場合に true が返されないことはほぼ確実です。

于 2010-04-28T15:24:35.993 に答える