perl speichern Sie eine Datei heruntergeladen haben, lwp
Im mit LWP eine ausführbare Datei herunterladen geben und mit der Antwort im Speicher, bin ich in der Lage hash der Datei. Aber wie kann ich diese Datei auf meinem system? Ich denke, ich bin auf der falschen Spur mit dem, was ich versuche unten. Der download ist erfolgreich, wie ich bin in der Lage, zum generieren des hash korrekt (ich habe es überprüft, es durch das herunterladen der eigentlichen Datei und vergleicht die hashes).
use strict;
use warnings;
use LWP::Useragent;
use Digest::MD5 qw( md5_hex );
use Digest::MD5::File qw( file_md5_hex );
use File::Fetch;
my $url = 'http://www.karenware.com/progs/pthasher-setup.exe';
my $filename = $url;
$filename =~ m/.*\/(.*)$/;
$filename = $1;
my $dir ='/download/two';
print "$filename\n";
my $ua = LWP::UserAgent->new();
my $response = $ua->get($url);
die $response->status_line if !$response->is_success;
my $file = $response->decoded_content( charset => 'none' );
my $md5_hex = md5_hex($file);
print "$md5_hex\n";
my $save = "Downloaded/$filename";
unless(open SAVE, '>>'.$save) {
die "\nCannot create save file '$save'\n";
}
print SAVE $file;
close SAVE;
Wenn Sie sich Fragen, warum ich nicht stattdessen alles herunterladen dann analysieren Sie den Ordner für jede Datei und jeden hash, ist es, weil im Download-alle diese Dateien in einer Schleife. Und während jeder Schleife, ich lade die entsprechenden Quell-URL (wo sich diese Datei gefunden wurde) , zusammen mit dem Datei-Namen und hash in einer Datenbank in einem Rutsch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
getstore()
ausLWP::Simple
getstore ist eine ausgezeichnete Lösung, aber für jemand anderes zu Lesen, diese Antwort in einem etwas anderen setup, kann es nicht das Problem zu lösen.
Zunächst, Sie könnte ganz vielleicht nur leiden unter einem Binär - /text-Ausgabe.
Würd ich ändern
zu
Ich mag das, besser ist, wenn Sie eingestellt haben, oder erworben, einige Einstellungen in Ihrem browser-Objekt ($ua), Sie werden ignoriert in LWP::Simple ist, getstore, als er sich auf seinen eigenen browser.
Außerdem, verwendet es die drei-parameter-version von open-das sollte sicherer sein.
Andere Lösung wäre die Verwendung der callback-Methode und speichern Sie die Datei beim herunterladen es, wenn Sie zum Beispiel den Umgang mit einer großen Datei. Der hashing-Algorithmus, der müsste geändert werden, so ist es wohl nicht relevant hier, aber hier ist ein Beispiel:
Und wenn die Größe unwichtig ist (und das hashing geschieht auf eine andere Weise) konnten Sie nur bitten, Ihren browser zu speichern, es direkt: