Wie mehrere externe Bilder downloaden

liz78x

Mitglied
Hallo,

ich habe in einer CSV Datei einige Tausend Links zu Grafiken. Wie kann ich nun all diese Grafiken auf einmal downloaden? Kennt da jemand ein Tool o.ä.?

MFG
 
Ein bisschen PHP-Code würde es schon tun...
Wie liegen die Bilder denn vor? Also in welcher Form?

Code:
Link
Link
Link

So?

(Und, wenn ich fragen darf, wozu brauchst du das?)
 
Benötigt allow-url-fopen. Ein Danke wäre toll :-(

PHP:
<?php

  $file = "test.txt"; // Datei, in der die Sachen stehen. Durch Leerzeilen getrennt
  $newfolder = "image_downloader"; // Ordner in den runtergeladen wird
  
  if(!is_dir($newfolder)){
    if(mkdir($newfolder))
      echo "Ordner ".$newfolder." wurde erstellt.<br>";
    else
      die("Ordnererstellung fehlgeschlagen");
  }
  
 $contents = file_get_contents($file) or die("Datei konnte nicht ge&ouml;ffnet werden");
 
 $contents = explode("\n", $contents);
 
foreach($contents as $c_2){

$c_2 = trim($c_2);

$filename = explode("/", $c_2);
$filename = $filename[count($filename)-1];

		$contentofdownload = file_get_contents($c_2);
    
    if($contentofdownload){

		if(file_put_contents($newfolder."/".$filename, $contentofdownload))
      echo $filename." wurde im Ordner ".$newfolder." gespeichert.<br>";
    else
       echo "Download von ".$filename." fehlgeschlagen.<br>";
}  else{
       echo "Download von ".$filename." fehlgeschlagen.<br>";}


}
?>
 
Ich habe mich leider zu früh gefreut. Nach ca 100 Bildern ist der Download abgebrochen. Insgesamt gab es zwei Fehlermeldungen:

Warning: file_get_contents(http://media.domain.de/medium//) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in E:\xampp\htdocs\externe_bilder.php on line 24

Diese Fehlermeldung kam zum Schluss, direkt danach wurde der Download abgebrochen:

Fatal error: Maximum execution time of 60 seconds exceeded in E:\xampp\htdocs\externe_bilder.php on line 24

Weisst du vielleicht was da falsch sein könnte? Ich der txt Datei mit den Links kommen häufig doppelte Urls vor. Vielleicht hat es was damit zu tun?
Und was hat es mit den 60 Sek zu tun?


Nachtag: In xammp/php/php.ini sind folgende Werte aufgeführt:

max_execution_time = 3600
safe_mod = on
 
Zuletzt bearbeitet:
Tja die zweite Fehlermeldung (und somit den Abbruch) kannst du beheben indem du die max_execution_time höherstellst (z.B. 24 Stunden = 60*60*60*24 = 5184000).

Bei der ersten ist der Link nicht korrekt, das Script müsste aber trotzdem mit dem anderen Zeug weitermachen :)

EDIT: Doppelte Sachen machen nix, die werden halt doppelt downgeloadet und ersetzt.
EDIT2: Ich seh grad, dass die max_execution_time bei mir in Sekunden angegeben wird. Also einfach ausrechnen.
 
Zuletzt bearbeitet:
Nun klappt alles. Vielen Dank nochmal. Eine kleine Frage habe ich noch: Ist es möglich das Script auf dem Server (Webhosting) laufen zu lassen? Ich habs grade probiert, doch es kommen Fehjlermeldungen wie z.B.

Fatal error: Call to undefined function: file_put_contents() in /home/www/domain.de/www/externe_bilder_script.php on line 24

Auch wenn ich "file_get_contents" benutze, kommt der gleiche Fehler. Es wäre ganz gut, wenn ich das Script auf dem Server laufen lassen kann, weil dann muss ich nicht all die Bilder manuell per FTP uploaden...
 
file_put_contents gibt es, wie man der Doku entnehmen kann, erst seit PHP5. Wenn dein Webhoster also das noch nicht hat, oder allow_url_open auf false hat dann geht es auf dem Server nicht. Ich würde dir empfehlen die Bilder einfach hochzuladen. Du kannst den PC ja mal über Nacht laufen lassen oder so :)
 
Zurück