Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Bilder in DB speichern [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Bilder in DB speichern


 
Imion
11-12-2002, 13:22 
 
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

 
Titus
11-12-2002, 14:37 
 
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:

// Bilddaten einlesen
$fp=fopen($datei, 'rb')
$daten=fgets($fp, filesize($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:
//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;


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:06 Uhr.