Hallo!
Ich möchte für meine Seite alle Dateien (Bilder, HTML-Dateien)
in eine MySQL Datenbank speichern, zwecks besserem Management.
Ich weiß nicht was das bringen soll. HTML-Dateien sind Text, dementsprechend sollte auch Text in der DB gespeichert werden. Es gibt keinen Grund, die html-Dateien als Binärdaten in der DB zu speichern, außer um alles unnötig komplizierter zu machen. Bilder sollten im Grunde auch im Dateisystem des Servers gespeichert werden, und in der DB nur ein Bezug darauf, z.B. der Dateiname. Binärdaten blasen die DB-Größe auf und bremsen das DBS unnötig. Wenn es trotzdem unbedingt sein muss, dass Bilder in der DB landen, sollten es zumindest nur kleine sein.
Ich hab schon eine Tabelle angelegt, in der neben anderen
Spalten auch „…,data blob,…“ für binäre Objekte ist.
Um ein JPG in der DB zu speichern empfiehlt sich MEDIUMBLOB (bis 2^24 Bytes ~ 16MB). Das klingt zwar unverschämt groß, aber BLOB ist zu klein (2^16 Bytes ~ 64KB).
Leider ist es mir mittels PHP noch nicht gelungen, ein Bild
dort hineinzuspeichern.
Weiss jemand wie das geht???
ja, so:
speichern als ‚dbimages.php‘:
<?php /* MySQL-Tabelle erstellen:<br />
CREATE TABLE PICTURES (
ID INT DEFAULT '0' NOT NULL AUTO\_INCREMENT,
PICTURE MEDIUMBLOB,
PRIMARY KEY (ID));
\*/
//Mysql-Login
$dbhost = "localhost";
$dbuser = "<benutzername>";<br> $dbpwd = "";<br> $dbname = "";<br> <br> $conn = mysql_connect($dbhost, $dbuser, $dbpwd);<br> if (!$conn) {<br> die("Konnte keine Verbindung zur DB herstellen.");<br> }<br> mysql_select_db($dbname);<br> if (isset($_GET["id"])) {<br> //Bilddatei aus DB anzeigen<br> $result = mysql_query("SELECT PICTURE FROM PICTURES WHERE ID=" . $_GET["id"]);<br> if (mysql_num_rows($result) > 0) {<br> list($picture) = mysql_fetch_row($result);<br> }<br> header("Content-Type: image/jpeg");<br> print($picture);<br> } else {<br> if (isset($_POST["upload"])) {<br> //Bilddatei uploaden<br> $image = @imagecreatefromjpeg($_FILES['picture']['tmp_name']); //Bilddatei aus temporärer Datei erstellen<br> ob_start(); // Ausgabepufferung einschalten<br> imagejpeg($image); // JPG an Ausgabepuffer senden<br> $jpg = ob_get_contents(); // JPG aus Puffer in Variable lesen<br> ob_end_clean(); // Ausgabepufferung ausschalten / Puffer leeren<br> $jpg = mysql_real_escape_string($jpg);<br> $jpg = str_replace('##', '\#\#', $jpg); //Daten für MySQL formatieren<br> mysql_query("INSERT INTO PICTURES (PICTURE) VALUES ('$jpg')"); //Daten als MEDIUMBLOB speichern<br> } <br>?><br> <br> <br> Bild uploaden<br> $results = mysql_query("SELECT ID FROM PICTURES");<br> while (list($id) = mysql_fetch_row($results)) { <br> ?><br> <br><?php }<br /> ?> <br> JPG-Bilddatei uploaden: <br> <br> <br><?php }<br /> mysql_close($conn);<br>?></benutzername>
Gruß,
Rudy