Witam.
Potrzebuję przechowywać obrazki w bazie danych. Zrobiłem pewien test:
mysql> show columns from img;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| data | blob | YES | | NULL | |
| type | varchar(15) | YES | | NULL | |
+-------+-------------+------+
mysql> insert into img values(NULL, load_file('/home/www/w.jpg'), 'obraz.jpg');
<?php
header('Content-Type: image/jpeg');
header('Content-Disposition: inline; filename=file.jpg');
$db = mysql_connect("localhost", "login", "haslo");
$res= mysql_query("SELECT * FROM baza.img LIMIT 1");
if(!$res) die("ERR");
while($row = mysql_fetch_array($res)){
$img = $row['data'];
}
mysql_close($db);
// echo "OK";
echo $img;
// echo base64_decode($img);
?>
Niestety obrazek jest wyświetlony do połowy
Ciekawe jest to że po wykonaniu polecenia
select load_file('/home/www/w.jpg') into outfile '/home/www/w2.jpg';
Plik w.jpg zajmuje 117'484 a w2.jpg 122'285. Wie ktoś o co chodzi?
Co jest nie tak? Trzeba zapisywać obrazki po kodowaniu base64(nie chcę niepotrzebnie zapychać bazy danych, a dodatkowo base64 nie ma w poleceniach mysql)?