Bilder zwischen zwei Servern austauschen?

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

  • Bilder zwischen zwei Servern austauschen?

    Hallo,

    gibt es mit PHP eine Möglichkeit Bilder zwischen zwei Servern per HTTP zu transferieren?

    fopen/fread/file_get_content können ja keine binären Dateien verarbeiten, oder? Jedenfalls schlugen alle meine Versuche fehl.
    Die Funktion copy funktioniert bei mir auch nicht. Ich bekomme immer den Fehler 400 - Bad Request.

    Jetzt habe ich es ausserdem noch mit lynx versucht...
    PHP-Code:
    <?php
    shell_exec
    ("E:\\lynx\\lynx.exe -cfg \"E:\\lynx\\lynx.cfg\" -source \"http://www.server.de/test.bmp\" > \"E:\test.bmp\"");
    ?>
    Klappt mit gif und jpg Dateien ganz wunderbar. Aber anscheinend kann lynx keine bmp Dateien verarbeiten... Da kommt immer eine nicht lesbare Datei heraus.

    Zu hülfe, wer kann mit dabei helfen?!
    Zuletzt geändert von Kristian; 26.04.2005, 11:43.

  • #2
    Re: Bilder zwischen zwei Servern austauschen?

    Original geschrieben von Kristian
    gibt es mit PHP eine Möglichkeit Bilder zwischen zwei Servern per HTTP zu transferieren?
    theoretisch ja.
    auslesen per GET, woanders ablegen per PUT. aber letzteres ist natürlich auf den wenigsten webservern erlaubt.

    fopen/fread/file_get_content können ja keine binären Dateien verarbeiten, oder?
    wieso sollte das nicht gehen?

    Jetzt habe ich es ausserdem noch mit lynx versucht...
    [...] Klappt mit gif und jpg Dateien ganz wunderbar. Aber anscheinend kann lynx keine bmp Dateien verarbeiten... Da kommt immer eine nicht lesbare Datei heraus.
    na ja, der gedanke, einen textbrowser zum einlesen von bildressourcen ge-/missbrauchen zu wollen, offenbart ein nicht zu unterschätzendes komödiantisches talent.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: Re: Bilder zwischen zwei Servern austauschen?

      Original geschrieben von wahsaga
      wieso sollte das nicht gehen?
      Ich weiß nicht...
      Wenn ich
      PHP-Code:
      <?php $handle fopen("http://www.server.de/test.bmp""rb");?>
      mache, ist $handle eine nicht korrekte Dateiverbindung.
      Eine Fehlermeldung kommt allerdings sonst weiter nicht.

      na ja, der gedanke, einen textbrowser zum einlesen von bildressourcen ge-/missbrauchen zu wollen, offenbart ein nicht zu unterschätzendes komödiantisches talent.
      Ach glaub mir, man kann mit lynx noch viel mehr machen, ohne ein Comedian zu sein!
      Außerdem funktioniert es ja mit gif/jpg.

      Kommentar


      • #4
        Hallo,

        müsste sich doch mit:

        $bild = implode("",file("http://www.domain.de/bild.jpg/");

        einlesen lassen und dann mit fopen(); usw. ablegen lassen, oder

        Oder lieg ich da jetzt total daneben?

        Gruss
        Quetschi
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Schon mit wget versucht?

          Kommentar


          • #6
            Ui, vielen Dank für die Tips, ich probiere sie gleich aus und berichte.

            Kommentar


            • #7
              Wenn ich deinen Tip befolge, Quetschi, bekomm ich folgende Fehlermeldung:

              Warning: file(http://www.server.de/test.bmp): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request

              Genau die gleiche wie bei copy. Hm. Anscheinend hängt da grundsätzlich bei mir was schief. Normale übern Internet Explorer kann ich die bmp Datei öffnen...

              Ich versuch mal wget.

              Kommentar


              • #8
                fopen() und copy() schlagen wohl fehl, weil der entfernte Server den User-Agent nicht mag. Dagegen hilft ein
                PHP-Code:
                ini_set('user_agent','Mozilla: (compatible; Windows XP)'); 
                .
                (UA frei wählbar, hier nur als Beispiel.)

                Kommentar


                • #9
                  Es muss so aussehen:
                  PHP-Code:
                  $bild implode("",file("http://www.server.de/test.bmp/")); 
                  der abschließende Schrägstrich ist wichtig, sonst funktionieren Aufrufe auf anderen Servern nicht.

                  da file(); ein Array zurückgibt muss es erst noch mit implode() zusammengesetzt werden.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Oh man, ich nerv euch bestimmt schon voll...

                    Der Mist funktioniert nicht. Danke für die Hinweise onemorenerd & Quetschi.

                    Mein Code sieht jetzt wie folgt aus:
                    PHP-Code:
                    <?php
                        ini_set
                    ('user_agent','Mozilla: (compatible; Windows XP)');
                        
                    $bmp implode("",file("http://www.server.de/test.bmp/"));
                        
                    $fhandle_bmp fopen("test.bmp""wb");
                        if(!
                    fwrite($fhandle_bmp$bmp))echo "get bmp: err\n";
                        else echo 
                    "get bmp: ok\n";
                        if(
                    $fhandle_bmp)fclose($fhandle_bmp);
                    ?>
                    Und die Meldung lautet immer noch:
                    Warning: file(http://www.server.de/test.bmp/): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request

                    ini_set funktioniert übrigens und gibt auch den richtigen Wert weiter...

                    Sowas doofes. Was für Möglichkeiten hat man denn jetzt noch?

                    Ich probiere endlich mal das wget aus!

                    Kommentar


                    • #11
                      nicht http://www.server.de/test.bmp/ sondern http://www.server.de/test.bmp ( ohne / am ende )
                      h.a.n.d.
                      Schmalle

                      http://impressed.by
                      http://blog.schmalenberger.it



                      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                      ... nur ohne :-)

                      Kommentar


                      • #12
                        Der Quentschi hatte vorher im Thread noch was anderes gesagt. Ist aber eigentlich auch egal, funktioniert beides nicht...

                        Aber ich hab gerade eine Trockenübung mit wget gemacht und es funktioniert!!!! *juhu* Ich bau das gerade ins Script ein!

                        Ich berichte gleich!

                        Kommentar


                        • #13
                          @schmalle, Kristian

                          Auszug aus meinem Manual:

                          Weiterleitungen (HTTP-Redirects) werden nicht unterstützt, daher muss die Datei vollständig mit abschliessendem '/' geschrieben werden.

                          Wenn das falsch sein sollte, dann zünd ich mein Buch sofort an
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            Original geschrieben von Quetschi
                            Auszug aus meinem Manual:

                            Weiterleitungen (HTTP-Redirects) werden nicht unterstützt, daher muss die Datei vollständig mit abschliessendem '/' geschrieben werden.
                            in welchem zusammenhang ...?

                            höchstens bei irgendeinem spezialfall - allgemein kann ich da keinen sinn drin erkennen.

                            Wenn das falsch sein sollte, dann zünd ich mein Buch sofort an
                            an' it burns, burns, burns - my ring of fire ...
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              @wahsaga

                              file(); und readfile();

                              Ring um die E..r
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X