dontknow: Bilder verschiedener Typen in sql abspeichern, laden und anzeige

Zervus Ihr Leutz
Nach 3h googln und rumprobieren mit diversen scripten frag ich am Besten mal hier nach

Ich suche ein funktionsfähiges PHP Script mit den Funktionen:

Bilder über ein Formular in eine SQL-Tabelle uploaden und als BLOB speichern
Das ganze dann wieder auslesen und die Bilder wieder ausgeben,

das ganze am besten für verschieden Dateitypen (gif/png/jpg)

gibts da vielleicht schon was fertiges oder muss man das basteln

mein eigentliches Problem ist eigentlich nur was und ich speichern muss und wie bzw was und wie ich es wieder auslesen muss um das ganze auszugeben

am besten in der Form das ich das ganze wie echo "<img src="<?php $Blobdata ?>"> ausgeben kann

  1. Hi,

    Ich suche ein funktionsfähiges PHP Script mit den Funktionen:

    Bilder über ein Formular in eine SQL-Tabelle uploaden und als BLOB speichern
    Das ganze dann wieder auslesen und die Bilder wieder ausgeben,

    Wir sollten erst mal die Frage klären, wozu du die Bilder überhaupt in der Datenbank speichern willst - i.a.R. sind die nämlich im Dateisystem besser aufgehoben.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. naja ich möchte gerne zum einen die avatarpics so speichern ... natürlich in begrenzter pixelgröße und dateigröße natürlich

      das ganze auch nur weil ich nur einen uploadzugang zu meinem server hab und die daten dazu nicht an jeden weitergeben will

      zur Zeit kann ich auch nur per FTP bzw WEBFTP Files uploaden
      aber vielleicht gibts ja ne elegantere und sicherere Lösung für mein Problem

      1. Hi,

        naja ich möchte gerne zum einen die avatarpics so speichern ... natürlich in begrenzter pixelgröße und dateigröße natürlich

        Das ist noch kein pro-Datenbank-Argument.

        das ganze auch nur weil ich nur einen uploadzugang zu meinem server hab und die daten dazu nicht an jeden weitergeben will

        Das ist auch keines - mach ein Upload-Formular, und fertig.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Es ist mal egal ob das sinvoll oder nicht ist ... ich möchte es eben nunmal so lösen weil es eben für mich die beste Wahl ist und außerdem interessiert mich das sowie so wie das ganze dann bewerkstelligt wird jetzt rein Bildertechnisch
          ich könnte mir u.A. auch vorstellen diverse scripte komplett in der Datenbank zu halten und bei bedarf bzw je nach Rechtestatus einzubinden

          Also ne Erklärung bzw ein vielleicht fertiges Script oder Tutorial zu dem ganzen wären echt super

          THX

          1. ich könnte mir u.A. auch vorstellen diverse scripte komplett in der Datenbank zu halten und bei bedarf bzw je nach Rechtestatus einzubinden

            Also ne Erklärung bzw ein vielleicht fertiges Script oder Tutorial zu dem ganzen wären echt super

            Mich wundert, dass du nicht selbst hier ein Script diskutierst. Bei mir ergibt googeln einige Hits, wie zum beispiel
            http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_(blob_storage).xml

            Ich zitiere aus deinem ersten Posting:

            am besten in der Form das ich das ganze wie echo "<img src="<?php $Blobdata ?>"> ausgeben kann

            Dir ist schon klar, dass das ein NoGo ist, falls du an data: denkst.
            Ergo wirst du bei einer Anfrage an eine URI jedes mal ein Script anwerfen müssen, dass deinen Blob aus der Datenbank holt und ausgibt mit dem entsprechenden Mimetyp.

            Das ist der Grund, warum Blobs eine schlechte Idee sind.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
            1. Beat gut das du den Link nochmal gepostet hast ... bin vorhin schon drüber
              gestolpert allerdings hat es bei mir nicht gefunzt ... hab eben noch e bissel
              dran rumgebastelt und es geht ... top!

              Jetzt muss ich das ganze nur noch auseinander nehmen und meinen Bedürfnissen
              anpassen und auf mehrere Seiten aufspalten und den ganzen $GET Krams in $POST
              Form bringen

          2. Moin!

            ich möchte es eben nunmal so lösen weil es eben für mich die beste Wahl ist und außerdem interessiert mich das sowie so wie das ganze dann bewerkstelligt wird jetzt rein Bildertechnisch

            Soso. Du weist nicht einmal wie es geht, welche Datenbank benutzt wird und so weiter - aber dass es die besten Wahl ist, darauf hast Du Dich jetzt schon mal festgelegt. Ich darf anmerken, dass mir diese Festlegung zu diesem Zeitpunkt durchaus merkwürdig erscheint. Ich antworte dennoch:

            Ob Bild oder Text ist doch egal:

            Daten aus einer Datei lesen: file_get_content().
            Daten in Datenbank schreiben: SQL und zwar INSERT / UPDATE, und natürlich den Mitteln der verwendeten  Datenbankerweiterung.
            Daten aus Datenbank auslesen: SELECT.
            Daten zum Browser senden:
            1. header(Mime-type)
            2. echo/print der Daten

            Ist alles trivialer Kram aber halt viel zu schreiben. Genau das willst Du ja.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix

    2. Hello,

      Ich suche ein funktionsfähiges PHP Script mit den Funktionen:

      Bilder über ein Formular in eine SQL-Tabelle uploaden und als BLOB speichern
      Das ganze dann wieder auslesen und die Bilder wieder ausgeben,

      Wir sollten erst mal die Frage klären, wozu du die Bilder überhaupt in der Datenbank speichern willst - i.a.R. sind die nämlich im Dateisystem besser aufgehoben.

      ... und außerhalb der Regel, wenn die Bilder z.B. sehr klein sind, ist eine Speicherung in der Datenbank gar nicht mal so übel.

      Oder welche Regeln könntest Du bitte noch nachliefern -> "i.a.R."?

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hi,

        Wir sollten erst mal die Frage klären, wozu du die Bilder überhaupt in der Datenbank speichern willst - i.a.R. sind die nämlich im Dateisystem besser aufgehoben.

        ... und außerhalb der Regel, wenn die Bilder z.B. sehr klein sind, ist eine Speicherung in der Datenbank gar nicht mal so übel.

        Und welche Vorteile sollte das, selbst bei kleinen Bildern, haben?

        „Backup per SQL-Dump“ wäre vielleicht einer.

        Aber dafür den Preis zu zahlen, jedes Mal ein PHP-Script anzuschmeißen, das eine Verbindung zur DB aufbauen muss, wäre mir zu viel des guten - für eine Aufgabe, die der Webserver bei Speicherung im Dateisystem quasi „gratis“ mit übernimmt. Und das auch noch ohne, dass du Details wie Caching selber implementieren musst.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hello,

          Wir sollten erst mal die Frage klären, wozu du die Bilder überhaupt in der Datenbank speichern willst - i.a.R. sind die nämlich im Dateisystem besser aufgehoben.

          ... und außerhalb der Regel, wenn die Bilder z.B. sehr klein sind, ist eine Speicherung in der Datenbank gar nicht mal so übel.

          Und welche Vorteile sollte das, selbst bei kleinen Bildern, haben?

          „Backup per SQL-Dump“ wäre vielleicht einer.

          • Referenzielle Integrität
          • Zugriffsschutz

          Aber dafür den Preis zu zahlen, jedes Mal ein PHP-Script anzuschmeißen, das eine Verbindung zur DB aufbauen muss, [...]

          das ist eben genau die Frage. Will man die Bilder normal per HTTP erreichen können, oder will man auch noch einen Zugriffsschutz dafür haben und/oder eine Statistik, die über HTTP-Server-Logs hinausgehen?

          Eben genau das sollte man vorher genau festlegen.

          Und bei welcher Größe sollte man dann doch besser aufhören? Alle Bilder, die kleiner als 4kBytes sind, machen mir keine Kopfschmerzen. Darüber lacht die Datenbank und wird sei vermutlich kostengünstiger verwalten, als das Filesystem. Aber wenn die Bilder dann über 100kBytes groß werden, bekomme ich auch Kopfschmerzen - da gebe ich Dir vollkommen Recht.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  2. Moin!

    Schau Die mal die Dokumentation zu move_uploaded_file() auf php.net und besonders den dortigen Beitrag den Nutzers "brentwientjes" vom 15-Feb-2010 07:34 an.

    Die Vorgehensweise selbst ist relativ trivial:

    Die notwendigen Daten stehen alle in $_File. Aus Sicherheitsgründen wird geprüft, ob es wirklich(!) Grafiken sind und diese werden im Beispiel von "brentwientjes" auch gleich in der Größe verringert - das spart ggf. Speicherplatz und Serverleistung beim Ausliefern - führt andererseits aber manchmal zu unschönen Ergebnissen (z.B. bei Transparenzen in png-Dateien).

    Das Du die Datenbank nicht brauchst hatten wir schon geklärt. Das Dateisystem ist genau genommen nämlich schon eine - und übrigens eine sehr effektive (schnelle), wenn auch mit erheblichen Einschränkungen.

    Ein ganz anderes Problem ist die Tatsache, dass Du natürlich die Dateinamen selbst vergeben musst. Wie wäre es, es handelt sich ja um Avatare, mit der Idee, diese wie den jeweiligen User zu benennen. Damit hast Du dann auch eine tolle Möglichkeit diese Dateien z.B. gemeinsam mit dem User zu löschen. Das Ausliefern eines Ersatzbildes übernimmt am billigsten der 404er Reaktionsmechanismus des Servers in einer lokalen .htaccess-Datei - sofern Du den Apache benutzt.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Hello,

      Schau Die mal die Dokumentation zu move_uploaded_file() auf php.net und besonders den dortigen Beitrag den Nutzers "brentwientjes" vom 15-Feb-2010 07:34 an.

      Ich habe das jetzt gerade mal aus den Augen verloren. Was passiert mit den Exif-Headern eines JPGs, wenn man das mit der GD-Lib bearbeitet?

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Moin!

        Sollte wohl seit GD-Lib 2 / PHP-version 4.3.10 gelöst sein. Nachsehbar mit phpinfo().

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

        1. Hello,

          Sollte wohl seit GD-Lib 2 / PHP-version 4.3.10 gelöst sein. Nachsehbar mit phpinfo().

          Also bleiben die erhalten, auch bei einem Resize?

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Moin!

            Sollte wohl seit GD-Lib 2 / PHP-version 4.3.10 gelöst sein. Nachsehbar mit phpinfo().
            Also bleiben die erhalten, auch bei einem Resize?

            Gute Frage. Teste es doch. Ich wüsste nicht, wozu ich es jemals gebraucht haben soll.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix

            1. Hello,

              Sollte wohl seit GD-Lib 2 / PHP-version 4.3.10 gelöst sein. Nachsehbar mit phpinfo().
              Also bleiben die erhalten, auch bei einem Resize?

              Gute Frage. Teste es doch. Ich wüsste nicht, wozu ich es jemals gebraucht haben soll.

              Es bleibt mir auch nichts erspart...

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. so ich hab jetzt mal das script hier:
                http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_%28blob_storage%29.xml

                zum laufen bekommen und in meine Seite eingebaut nur wie bekomme ich es jetzt
                hin das geladene Pic wieder an einer bestimmten Stelle im Browser anzeigen zu
                lassen

                1. Moin!

                  nur wie bekomme ich es jetzt hin das geladene Pic wieder an einer bestimmten Stelle im Browser anzeigen zu lassen

                  Ich würde ja sagen: "<http://de.selfhtml.org/css/eigenschaften/positionierung.htm@title=Nutze CSS!>".

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix