2010-04-28 3 views
3

Имеет ли смысл размер файла здесь? Я пытался отключить соединение во время загрузки, но похоже, что размер-критерий никогда не был достигнут.Как я могу проверить, что я загрузил весь файл в Perl?

#!/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"; 
    } 
} 
+0

Опечатка: '' filenmame'', но я думаю, что это только в этом фрагменте. – Svante

+0

Почему вы хотите проверить размер файла? Вы пытаетесь проверить, что файл не поврежден или что-то еще? –

+0

Я попробовал еще раз, и если я подожду достаточно долго, я получу «Не в порядке». –

ответ

2

Если вы просто хотите использовать тестовый код, введите неправильный размер файла и убедитесь, что ваша загрузка не «ОК». Если вы хотите проверить, что происходит с прерванным соединением, вам нужен гораздо больший файл - загрузка в 2342 байта должна занимать лишь часть доли секунды.

0

Я полагаю, это не повредит, но я уверен, что is_success не вернет true, если соединение прервано.

+0

Я попытался снова, и если я подожду достаточно долго, я получу «Не в порядке». –

1

Это странно, я получил те же результаты, что и вы. У меня нет решения, но я сообщаю вам немного о вашей проблеме.

Что происходит, так это то, что сохраненный файл больше, чем ожидалось, и разрыв соединения не был. Попытка bunzip2 даст ошибку, даже после усечения результирующего файла по желаемому размеру.

Точный такой же результат был достигнут с помощью LWP :: UserAgent с параметром content_file для метода get(). То же самое снова добавление обработчика response_data к объекту $ ua.

Но следующая команда заставила меня хорошие результаты:

ПОЛУЧИТЬ http://www.kernel.org/pub/linux/kernel/v2.6/next/patch-v2.6.34-rc5-next-20100428.bz2> next_kernel.bz

И поскольку GET является сценарий LWP-запрос, основанный на LWP, вы можете найти ответы, проверяя свой код, если вы готовы копать это глубоко.

Надеюсь, это вам поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^