Zugriff auf entfernte Dateien

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

  • Zugriff auf entfernte Dateien

    Hallo Leute,

    ich bin neu hier und versuche mich seit einigen Tagen an einer Datenbank, die mir gewisse Informationen meiner Vertragspartner im Internet zur Verfügung stellt. An die Informationen komme ich normalerweise über einen Link:

    http://beispiel.com/Service?method=irgendwas&Profil=wasanderes
    (Aus Datenschutzgründen abgeändert!)

    Nun bekomme ich eine ZIP-Datei die einige CSV-Dateien enthalten.

    Mein PHP-Script ist schon so weit, dass die CSV-Dateien extrahiert werden der Reihe nach eingelesen und die enthaltenen Daten verarbeitet werden.

    So weit bin ich schon.

    Jetzt möchte ich noch das mein PHP-Script mir noch den lästigen Download der ZIP Datei abnimmt und diese in einem Verzeichnis auf dem lokalen Server speichert.

    Gefunden habe ich bisher folgendes:

    $url_stuff = parse_url('http://beispiel.com/Service?method=irgendwas&Profil=wasanderes');
    $port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
    $fp = fsockopen($url_stuff['host'], $port);
    $query = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
    $query .= 'Host: ' . $url_stuff['host'];
    $query .= "\n\n";
    fwrite($fp, $query);

    Das Script läuft auch Fehlerfrei durch. Nur gibt es nirgends eine ZIP-Datei.

    Bin hier für jeden Hinweis, Ratschlag oder Geistesblitz dankbar.

    Danke im Voraus!!
    MarkOtti

  • #2
    Re: Zugriff auf entfernte Dateien

    Original geschrieben von MarkOtti
    Das Script läuft auch Fehlerfrei durch. Nur gibt es nirgends eine ZIP-Datei.
    wo soll die datei auch herkommen, wenn du die antwort des servers nicht abfragst?
    fgets() bietet sich an, siehe auch beispiel bei fsockopen()

    Kommentar


    • #3
      Re: Re: Zugriff auf entfernte Dateien

      Original geschrieben von 3DMax
      wo soll die datei auch herkommen, wenn du die antwort des servers nicht abfragst?
      fgets() bietet sich an, siehe auch beispiel bei fsockopen()
      Hallo 3DMax,

      danke für Deinen Hinweis. Ich denke, ich bin dem völligen Verständnis dicht auf der Spur. Mal sehen ob ich da richtig liege:

      1. Mit fsockopen stelle ich "nur" die Verbindung zum Server her um dann ...
      2. ... den eigentlichen HTTP Request mittels fwrite abzusetzen.

      Die nun folgende Antwort vom Server schreibe ich mittels einer while-Schleife in einen $buffer,

      den ich dann mittels einer weiteren fopen/fwrite Kombination in Form einer ZIP-Datei auf die Festplatte bringe!!

      So weit richtig??

      Wenn ja, dann schaut Euch mal mein jetziges Script an:

      $url_stuff = parse_url($url);
      $port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
      $fp = fsockopen($url_stuff['host'], $port, $errno, $errstr, 120);
      $query = "GET " . $url_stuff['path'] . '?' . $url_stuff['query'] . " HTTP/1.1\r\n";
      $query .= "Host: " . $url_stuff['host'] . "\r\n";
      $query .= "\r\n";
      echo "$query<br> $errno $errstr<br>";
      fwrite($fp, $query);
      while (!feof($fp)) {
      $buffer .= fgets($fp, 4096);
      }
      fclose($fp);
      $handler = fopen($downloaddir . $downloadfile, "w");
      fwrite($handler, $buffer);
      fclose($handler);

      Mit diesem Script landet tatsächlich eine ZIP Datei im richtigen Ordner, nur ist diese anstelle von ca. 6 MB nur 1KB groß.
      Nebenbei: echo $errno, $errstr; ergibt 0

      Sollte es ausser fsockopen noch eine andere Variante geben, um eine ZIP Datei mittels HTTP-Request auf meinen Server bekommen..... immer her damit!!

      Schonmal danke für Eure Antworten!

      MarkOtti

      Kommentar


      • #4
        Nenne die ZIP-Datei mal in .txt um und schau rein.

        Kommentar


        • #5
          Original geschrieben von onemorenerd
          Nenne die ZIP-Datei mal in .txt um und schau rein.

          Oooh Man-o-mann!!!!!!!

          Da hätt ich auch selbst drauf kommen können. Schon tausendmal gelesen.

          Der Header hängt da natürlich noch dran. Den muss ich jetzt noch abschneiden.

          Das mit der 1KB großen Datei scheint Zufall gewesen zu sein. Denn von ca. 3 Versuchen scheinen 2 zu funktionieren.

          Ich habe das Gefühl das hier ab und zu eine temporäre Umleitung im Spiel ist. Jedenfalls zeigt mir das Tool auf http://tools.nophia.de/werkzeuge-htt...alysieren.html soetwas an. Manchmal!!

          Auch hier such (google) ich jetzt nach entsprechenden Lösungen. Für kleine Hinweise bin ich weiterhin dankbar!!

          Nochmals danke!

          MarkOtti

          Kommentar


          • #6
            Waum nicht einfach mit:
            PHP-Code:
            copy('http://beispiel.com/Service?method=irgendwas&Profil=wasanderes','zieldatei.zip'
            Mit eingeschalteten Url_Wrappern, sollte das gehen...
            Wir werden alle sterben

            Kommentar


            • #7
              Original geschrieben von combie
              Waum nicht einfach mit:
              PHP-Code:
              copy('http://beispiel.com/Service?method=irgendwas&Profil=wasanderes','zieldatei.zip'
              Mit eingeschalteten Url_Wrappern, sollte das gehen...
              Jau, das wär richtig einfach. Nur bekomme ich hier ein:

              [function.copy]: failed to open stream: HTTP request failed! in ...

              Den Url-Wrapper musste ich schon einschalten, da ich an anderer Stelle mit der Copy-Funktion eine csv-Datei per direktem Link kopiere (ohne Request). Das funktioniert auch einwandfrei.

              Das wenige Wissen, was ich mir in den letzten Tagen versucht habe anzueignen, deutet mir darauf hin, dass in diesem Fall fsockopen die einzig funktionierende Alternative ist. Aber ich lerne ja noch

              Bin jetzt grad dabei den Header abzuschneiden. So Stück für Stück nähere ich mich dem Endergebnis. So Gott will!!

              Nochmals an alle!

              MarkOtti

              Kommentar

              Lädt...
              X