Bilder in DB speichern

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

  • Bilder in DB speichern

    Hi alle zusammen,
    ich hab irgendwo gehört das man bilder direkt in eine DB speichern kann, und wollte fragen ob das stimmt, das ich also bilder nicht mehr hochladen muss, sondern direkt in einer tabelle speichern kann.

    Für antworten wäre ich dankbar

  • #2
    stimmt. allerdings ist das nicht empfehlenswert, wenn die Bilder oft aufgerufen werden; da dann die Last des DB-Servers erheblich (und unnötig) steigt.

    Wie geht das nu?
    1. Tabelle:
    - die obligatorische id bigint unsigned auto_increment primary key
    - ein varchar(30) für den "mimetype" (inklusive 'image/')
    - für die Daten Spalte "bilddaten" vom Typ BLOB (max. 64KB-1Byte) oder MEDIUMBLOB (max. 16MB-1Byte)
    Es gibt auch noch TINYBLOB (max. 255 Bytes) und LARGEBLOB (max. 4GB-1Byte), aber die sind wohl für Web-Bilder weniger interessant.

    2. Einfügen:
    PHP-Code:
    // Bilddaten einlesen
    $fp=fopen($datei'rb')
    $daten=fgets($fpfilesize($datei));
    fclose($fp);
    // Mime-Typ ermitteln
    $mimestr = array('binary/unknown''image/gif''image/jpg',
      
    'image/png''application/x-shockwave-flash');
    getimagesize($datei$info);
    $mime $mimestr[$info[2]];[/i]
    // in DB schreiben
    mysql_query("insert into bilder (bilddaten, mimetype)
      values('"
    mysql_escape_string($daten). "', '$mime')");
    // Das mysql_escape_string ist unbedingt nötig! 
    3. Auslesen:
    - auf der HTML-Seite: <img src="image.php?id=...">
    - image.php:
    PHP-Code:
    //Bilddaten und Mime-Typ auslesen
    $res=mysql_query("select bilddaten, mimetype from bilder
      where id=
    $_REQUEST[id]");
    list(
    $daten$mime)=mysql_fetch_row($res);
    // Ausgabe
    header("Content-Type: $mime\n");
    echo 
    $daten
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar

    Lädt...
    X