Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrere Bilder von URL speichern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mehrere Bilder von URL speichern

    Hey.

    Ich benötige ein Script was mir die JPGs von aufeinanderfolgenden URLs speichert.
    Die URLS sehen alle so aus:

    http://www.test.de/bilder/1.jpg
    http://www.test.de/bilder/2.jpg
    http://www.test.de/bilder/3.jpg
    http://www.test.de/bilder/4.jpg
    http://www.test.de/bilder/5.jpg

    usw.

    das geht weiter bis Zahl x (diese ist bekannt!)

    Ein normales Script zum speichern habe ich bereits.

    PHP-Code:
    <?php
    $url 
    'http://www.test.de/bilder/1.jpg';
    $img '/verzeichnis/'.'1.jpg';
     
    $ch curl_init($url);
    $fp fopen($img'wb');
    curl_setopt($chCURLOPT_FILE$fp);
    curl_setopt($chCURLOPT_HEADER0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);
    ?>
    weiter komme ich jedoch aufgrund fehlendem Wissen nicht.
    Selbst dieses hat ein Bekannter mir zugesandt, der mich auch hierher geleitet hat.
    Da dies das einzige Script ist was ich benötige,
    wäre PHP komplett lernen, zuviel des guten, wenn auch nützlich.

    Ich könnte mir denken, das man doch bestimmt das so machen kann,
    das man sagt: http://www.test.de/bilder/'$Zahl'.jpg und man per Formular dem Script sagt, von wo er anfangen soll. Das wird in einer Schleife abgearbeitet bis er bei der zweiten Zahl ist, die eingegeben wurde.
    Theorie ist vielleicht gut, für die Praxis bitte ich um eure Hilfe.

    Danke für jede Hilfe.

    P.S: Notfalls würde ich dem Helfer auch noch n 10er zahlen (wenn das hier ok ist?!)


  • #2
    Versuch mal das:
    PHP-Code:
    <?php 
    $minimum 
    1// Von...
    $maximum 5// ...bis.

    for ($i $minimum$i $maximum$i++) {
        
    $url "http://www.test.de/bilder/$i.jpg"
        
    $img "/verzeichnis/$i.jpg"
      
        
    $ch curl_init($url); 
        
    $fp fopen($img'wb'); 
        
    curl_setopt($chCURLOPT_FILE$fp); 
        
    curl_setopt($chCURLOPT_HEADER0); 
        
    curl_exec($ch); 
        
    curl_close($ch); 
        
    fclose($fp); 
    }
    ?>
    (Ok ohne Formular...)

    Kommentar


    • #3
      monilth hättest nicht example.com schreiben können?


      egal, nehmt wget:
      Code:
      wget -r -l1 --no-parent -A.jpg http://www.example.com/bilder/verzeichniss
      auch ohne formular.

      Kommentar


      • #4
        Ich, wieso denn ich? Ich habe nur copy + paste gemacht.

        Kommentar


        • #5
          Hallo und Danke für den Code. Leider hilft er in meinem aktuellen Fall nicht mehr.
          Mit JPG hat er wunderbar funktioniert. Error reporting zeigt auch nichts an.
          Es gab doch mal einen weg wo das in eine Datei ausgelagert wurde?
          Der Problem Code:

          PHP-Code:
          <?php 
          error_reporting
          E_ALL );
          $minimum 00383374// Von...
          $maximum 00383674// ...bis.

          for ($i $minimum$i $maximum$i++) {
              
          $url "http://test.de/content?action=image&sourcepath=19305605_1799/$i.png"
              
          $img "/bilder/$i.png"
            
              
          $ch curl_init($url); 
              
          $fp fopen($img'wb'); 
              
          curl_setopt($chCURLOPT_FILE$fp); 
              
          curl_setopt($chCURLOPT_HEADER0); 
              
          curl_exec($ch); 
              
          curl_close($ch); 
              
          fclose($fp); 
          }
          ?>
          Ich dachte mir das es vielleicht an den nullen am Anfang liegt, aber dann habe ich "mein" erstes Script von ganz oben damit getestet und es geht!
          Denkfehler? Ihr habt mir so wunderbar geholfen, ich hoffe auch dieses mal.
          (In anderen Foren ist selbst der Anfänger Bereich so, das man nur hochnäsige verlinkungen auf das php manuall bekommt und sich dann über einen lustig gemacht wird...)

          Vielen Dank für die Hilfe!

          Kommentar


          • #6
            Zitat von visurox Beitrag anzeigen
            PHP-Code:
            $minimum 00383374// Von...
            $maximum 00383674// ...bis. 
            $i sind integer und da werden die führenden Nullen entfernt. Für die Dateinamen musst du $i mit Nullen auffüllen, was z.b. mit sprintf() funktioniert. Hier sagt der Platzhalter %08u dass ein unsigned Integer auf 8 Stellen aufgefüllt wird.

            Wenn du nichts besonderes mit HTTP machst, so kannst du auch anstatt curl einfach copy benutzen.

            PHP-Code:
            for($i 383374$i 383674$i++) {
                
            $source sprintf('http://example.com/content?action=image&sourcepath=19305605_1799/%08u.png'$i);    
                
            $target sprintf('/bilder/%08u.png'$i);
                
            copy($source$target);

            Kommentar


            • #7
              Zu früh gefreut, er hat zwr geladen wie ein großer,
              aber keine einzige Datei runtergeladen...

              Kommentar


              • #8
                0 am Anfang bedeutet das es sich dabei um eine oktale Zahl handelt. Gültige Werte sind also nur Ziffern von 0-7. Falls eine ungültige Ziffer (in deinem Fall die 8 ) vorkommt, wird alles was danach kommt ignoriert. Die Zahl 00383374 ist in PHP also 3. Und $maximum ist ebenfalls 3.

                Kommentar


                • #9
                  Okeeey... und wie kann ich das ändern mit dem code von Blar? Weil die Zahlen müssen so bleiben wie sie sind, also von 0-9.

                  EDIT:
                  Warning: copy(/bilder/00383374.png) [function.copy]: failed to open stream: No such file or directory in index.php on line 5
                  Also ist der Fehler in

                  copy($source, $target);
                  Der Code der den Fehler dann doch ausgegeben hat (falls ihn mal einer brauch)

                  <?php
                  error_reporting(E_ALL);
                  ini_set("display_errors", 1);
                  include("DieDateiMitFehlern.php");
                  ?>

                  Kommentar


                  • #10
                    Da dies das einzige Script ist was ich benötige,
                    wäre PHP komplett lernen, zuviel des guten, wenn auch nützlich.
                    Solche Aussagen schreien imho nach einer Verlinkung in die Scriptbörse...
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zitat von Arne Drews Beitrag anzeigen
                      Solche Aussagen schreien imho nach einer Verlinkung in die Scriptbörse...
                      Wie ich am Anfang schon geschrieben habe, zahle ich notfalls auch n Zehner.

                      EDIT: Hat sich erledigt, das Problem war der Ordner Bilder.

                      <?php
                      for($i = 383374; $i < 383674; $i++) {
                      $source = sprintf('http://www.test.de/bilder/content?action=image&sourcepath=19305605_1799/%08u.png', $i);
                      $target = sprintf('%08u.png', $i);
                      copy($source, $target);
                      }
                      ?>
                      funktioniert problemlos.
                      Markiere das hier als erledigt und danke allen für ihre Hilfe!

                      Kommentar


                      • #12
                        [MOD] Zukünftig trotzdem bitte Scriptbörse.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar

                        Lädt...
                        X