Ankündigung

Einklappen
Keine Ankündigung bisher.

fopen, copy, file_get_contents mit Dateien aus DB

Einklappen

Neue Werbung 2019

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

  • fopen, copy, file_get_contents mit Dateien aus DB

    Hallo.

    Ich habe folgendes Problem:

    Ich muss Dateien (genauer Bilder) aus einem Dateisystem auslesen, sie kopieren und woanders abspeichern können. Wenn die Dateien normale Pfade im Stile von "../images/bla/test.jpg" hätten, wär das kein Problem.

    Meine Bilder werden aber mit Pfaden im Stile von "http://www.testseite.de/imagetool/?_id=c629b2a9e7def98e2823567908e3b8a3" ausgelesen. Und damit funktionieren die ganzen Befehle wie fopen, copy, file_get_contents, etc. nicht.

    Weiss jemand wie man solche Dateien irgendwie ansprechen und enstsprechend weiterverarbeiten kann?

  • #2
    Was bekommst du denn beim Aufruf der URL zurück?

    fopen und Ko können auch mit URL's umgehen (bei entsprechender Konfiguration)

    Kommentar


    • #3
      Irgendwie muss die Anwendung ja die ID auch auf eine konkrete Resource übersetzen. Diesen Weg musst DU eben auch gehen.

      Kommentar


      • #4
        Zitat von lstegelitz Beitrag anzeigen
        Was bekommst du denn beim Aufruf der URL zurück?
        Naja, als Beispiel für einen Bildlink:

        http://www.shopdirekt.ch/assistant/g...41494d17f1abbb

        (die Seite verwendet nur das selbe System, gehört mir also nicht )

        Zitat von nikosch Beitrag anzeigen
        Irgendwie muss die Anwendung ja die ID auch auf eine konkrete Resource übersetzen. Diesen Weg musst DU eben auch gehen.
        Das ist aber halt das von mir verwendete System, ich hab keinen Einblick auf die internen Funktionen davon.

        Kommentar


        • #5
          Sofern du allow_url_fopen=on hast, kannst du die URL per fopen() öffnen und dann ganz normal mit fwrite() auf die lokale Festplatte speichern. Ab dort hantierst du weiter mit lokalen Dateinamen.

          Wenn der Server (www.shopdirect.ch) nicht deiner sein sollte, ist das deine einzige Möglichkeit. Hattest du vor, die Dateien "remote" zu verändern/verschieben, muss ich dich enttäuschen, das geht nämlich nicht. HTTP ist eine Einbahnstraße

          Kommentar


          • #6
            Zitat von lstegelitz Beitrag anzeigen
            Sofern du allow_url_fopen=on hast, kannst du die URL per fopen() öffnen und dann ganz normal mit fwrite() auf die lokale Festplatte speichern. Ab dort hantierst du weiter mit lokalen Dateinamen.

            Wenn der Server (www.shopdirect.ch) nicht deiner sein sollte, ist das deine einzige Möglichkeit. Hattest du vor, die Dateien "remote" zu verändern/verschieben, muss ich dich enttäuschen, das geht nämlich nicht. HTTP ist eine Einbahnstraße
            Ne, sry, war missverständlich ausgedrückt. Der Link sollte nur zeigen, wie so ein Dateilink aussieht, das Ganze hat nichts mit der URL shopdirekt.ch zu tun, ich wollte nur nicht meine eigene URL hier posten, sonst werden meine Vorgesetzten mal noch sauer, wenn sie das sehen. ;

            Im Grunde gehts eigentlich nur darum, dass ich diese Dateien schlussendlich per getimagesize(), etc. auswerten kann. Das geht aber eben nur mit Dateien, die auch direkt via Pfad ansteuerbar sind und dafür wiederrum muss ich eben die Systemdateien entsprechend auslesen und in ein temp-Verzeichnis kopieren...

            Kommentar


            • #7
              Das ist aber halt das von mir verwendete System, ich hab keinen Einblick auf die internen Funktionen davon.
              Dann hast Du ein Problem. Denn vermutlich ist genau das das Ziel der Aktion mit dem URL Aufruf. Unter anderem wird dort gesteiuert werden, welches Produkt public ist etc.

              Kommentar


              • #8
                Es muss doch irgendeinen Weg geben, dieses Bild trotzdem rauszufiltern und entsprechend wonaders abzuspeichern. :/

                Kommentar


                • #9
                  Hä? Was willst du filtern?

                  Du hast exakt 2 Möglichkeiten:
                  1.) Das Bild liegt in einem Pfad, den du vom Internet aus direkt erreichen kannst. Du kannst eine URL bilden, mit der du auf das Bild zugreifen kannst, es wird ausgeliefert vom Webserver.

                  2.) Das Bild liegt ausserhalb des Webserver-Roots, es wird über eine PHP Funktion ausgeliefert. Eine Identifikation ist unabdingbar.

                  In beiden Fällen hast du die Bilddaten nach dem Aufruf, in beiden Fällen solltest du es lokal speichern, z.B. wenn du es verändern willst - Änderungen AUF dem entfernten Rechner sind über das HTTP Protokoll nicht möglich!

                  Kommentar


                  • #10
                    Er kommt doch an die Skripte nicht ran.
                    Woher soll er dann wissen, was bei einem Link passiert, bei dem eine ID per URL mitgegeben wird und das Skript daran entscheidet, welches Bild geladen werden soll?!

                    Ich weiß allerdings nicht, was passiert, wenn man z.B. mit curl die URL anfordert und das Ergebnis als Bilddatei ablegt?!
                    Kann sein, daß das gar nicht funktioniert, is nur grad mal ne Idee...

                    Kommentar


                    • #11
                      Zu 1) bzw. curl. Sowas, um imagesize zu bestimmen? Na ich weiß nicht. Da stimmt doch das Grundprinzip schon nicht.

                      Kommentar


                      • #12
                        Zitat von nikosch
                        Sowas, um imagesize zu bestimmen?
                        Anforderung war:
                        Ich muss Dateien (genauer Bilder) aus einem Dateisystem auslesen, sie kopieren und woanders abspeichern können.
                        Aber wie gesagt, bin selbst nicht sicher, ob das über curl so realisierbar ist...

                        Kommentar


                        • #13
                          Hmm, naja, bin jetzt davon ausgegangen:
                          Im Grunde gehts eigentlich nur darum, dass ich diese Dateien schlussendlich per getimagesize(), etc. auswerten kann. Das geht aber eben nur mit Dateien, die auch direkt via Pfad ansteuerbar sind und dafür wiederrum muss ich eben die Systemdateien entsprechend auslesen und in ein temp-Verzeichnis kopieren...

                          Kommentar


                          • #14
                            Ah ja... Dann siehts anders aus.
                            Meinst' denn das würde überhaupt per curl und tmpfile() funktionieren?
                            Mal von dem Umstand abgesehen?

                            Also per curl die url in ein Temp-File lesen und mit getimagesize auswerten?

                            Kommentar


                            • #15
                              Mh, also..

                              Es funktioniert jetzt doch mit fopen auf die entsprechenden Dateien zuzugreifen, der Serveradmin hat da irgendwas umgestellt (meinte er jedenfalls..), damit kann ich die Dateien so auslesen und via fwrite in ein lokales File schreiben.

                              Funktioniert bei zu grossen Dateien aber noch nicht (mehrere MB gross), aber wird schon irgendwie gehen schlussendlich.

                              Jedenfalls danke für eure Hilfe.

                              Kommentar

                              Lädt...
                              X