Script für PHP-Dateiupload in eine DB

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

  • Script für PHP-Dateiupload in eine DB

    Hallo!

    Ich bin schwer auf der Suche nac einem ausführlichen Script, mit dem man Dateien in eine MySQL Datenbank laden kann. Also unabhängig vom Dateiformat in einem BLOB oder so speichern.
    Auch ein zugehöriges Script zum auslesen wäre toll. habe zwar einige Postings gefunden, wo jemand sagte, er hätte solche Scripte, jedoch waren keine gepostet.
    Bevor jetzt jemand kommt, dass es Unfug ist, Dateien in einer DB anzulegen: geht nicht anders, da das Filesystem dauernd von einem Mirror überschrieben wird.

  • #2
    du muss einfach die ganze datei in ein string packen, und dan in dein blob feld.
    natürlich muss du auch in deiner tabelle die dazugehörige dateiendung abspeichern, um bei erstellen von deiner datei aus datenbank passende dateiname generieren zu können.
    sonnst unterscheidet es sich kaum von jedem anderem db eintrag.
    Ach so, die Tabelle muss aber Innodb sein.
    Slava
    bituniverse.com

    Kommentar


    • #3
      Aha, das ist ja schonmal ein wichtiger Hinweis mit der Tabelle. Aber wie lese ich eine Datei in einen String?

      Kommentar


      • #4
        $string = file_get_contents($file);
        mfg

        Kommentar


        • #5
          Re: Script für PHP-Dateiupload in eine DB

          Original geschrieben von humpfl
          Bevor jetzt jemand kommt, dass es Unfug ist, Dateien in einer DB anzulegen: geht nicht anders, da das Filesystem dauernd von einem Mirror überschrieben wird.
          Ist trotzdem unfug. Hast du irgendeine möglichkeit dafür zu sorgen
          dass deine dateien nicht überschrieben werden ?

          greets
          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

          Kommentar


          • #6
            Original geschrieben von Slava
            Ach so, die Tabelle muss aber Innodb sein.
            Warum?
            Es ist durchaus möglich BLOB-Felder zu haben und Dateien darin zu speichern, ohne dass die Tabelle Innodb als Format benutzt.

            Kommentar


            • #7
              aber trotzdem, warum sowas in die DB packen?

              Reicht doch wenn in der DB ein Link zur (hochgeladenen) Datei steht, normalerweise....

              Kommentar


              • #8
                Original geschrieben von getphp
                Warum?
                Es ist durchaus möglich BLOB-Felder zu haben und Dateien darin zu speichern, ohne dass die Tabelle Innodb als Format benutzt.
                zugegeben!
                Ich bin dazu überhaupt noch nie gekommen, dateien in blob zu speichern.
                keine Ahnung warum ich diese Aussage gamacht habe .
                Es gibt ein paar functionen LOAD_FILE('absolute_pfad'), die erlaubt die daten direkt in blob zu schreiben, und
                "select binärspalte INTO DUMPFILE 'pfadmit neuem namen' from ...." um in datei von blob zu schreiben.
                habe mit php noch nicht versucht, aber das steht in documentation MYSQL 4.1 in jedem fall dabei.
                Slava
                bituniverse.com

                Kommentar


                • #9
                  upload in MYSQL Datenbank

                  Hier der von dir benötigte Befehl:

                  Syntax:
                  insert into TABELLE (BLOB-Feld) values (LOAD_FILE(Datei))

                  Beispiel:
                  insert into Bilder (Bild) values (LOAD_FILE("C:\\temp\\bild.bmp"))


                  Achte darauf, dass bei MySQL bestimmte Zeichen maskiert werden müssen zum Beispiel der \ ein Pfadangabe sieht dann so aus!

                  C:\\temp\\test.txt

                  Beachte auch, dass es sich bei dem Pfad um einen Pfad auf deinem Server handelt. Willst du eine Datei aus einer Homepage über einen upload übergeben müsste das ganze so aussehen:

                  insert into Bilder (Bild) values (LOAD_FILE("'.$_FILES[Datei][tmp_name].'"))

                  Kommentar

                  Lädt...
                  X