[[oktatas:programozás:php|< PHP]] ====== Képek tárolása ====== ===== Bevezetés ===== Sokak szerint rossz ötlet képeket adatbázisban tárolni. Az adatbázisban tárolásnak azonban sok előnye van. Az adatbázisban tárolásról akkor érdemes lemondani, ha az adatbázis tárhelyünk korlátos. Előnyök: * könnyű backup * könnyű kategórizálás * központosított kezelés A képek tárolásának lehetőségei * a képeket egyszerűen fájlokból érjük el * a képek elérési útjait tároljuk adatbázisban * a képeket adatbázisban tároljuk ===== Blob ===== A Blob a Binary Large Object szavakból alkotott betűszó. Röviden a Blob egy mezőtípus, amelyben bináris adatokat tárolhatunk. A MySQL négy Blob típust ismer: * BLOB * TINYBLOB * MEDIUMBLOB * LONGBLOB ===== Táblakészítés ===== create table kepek ( id int not null auto_increment primary key, tipus varchar(25) not null default 'Ismeretlen', kep blob not null, dimenzio varchar(30) character set utf8 collate utf8_hungarian_ci not null default 'Ismeretlen', nev varchar(50) character set utf8 collate utf8_hungarian_ci not null default 'Névtelen', kategoria int(4) not null DEFAULT 0 ) engine = INNODB character set utf8 collate utf8_hungarian_ci; * id - A kép azonosítója * tipus - A kép MIME típusa * kep - Maga a kép blob tárolóban * dimenzio - getimagesize() függvénnyel kapott érték * nev - A kép neve * kategoria - Milyen kategóriába soroljuk (idegenkulcs) A kategóriáknak persze lehetne külön táblázata, itt pedig ez csak egy idegenkulcs lenne. ===== Feltöltő űrlap =====
===== Feltöltő ===== Válassz egy fájlt

'; } else { try{ upload(); }catch(Exception $e){ echo $e->getMessage(); echo 'Sajnálom, nem lehet feltölteni'; } } function upload() { if(is_uploaded_file($_FILES['userfile']['tmp_name'])) { $maxsize = 10000000; if($_FILES['userfile']['size'] < $maxsize) { $imgData = addslashes(file_get_contents($_FILES['userfile']['tmp_name'])); $info = getimagesize($_FILES['userfile']['tmp_name']); $user = "luser"; $pass = "titok"; mysql_connect("localhost", $user, $pass) or die(mysql_error()); mysql_select_db("test") or die(mysql_error()); $sql = "INSERT INTO kepek (tipus, kep, dimenzio, nev) VALUES ('{$info['mime']}', '{$imgData}', '{$info[3]}','{$_FILES['userfile']['name']}') "; //$info[3] pl.: width="132" height="152" if(!mysql_query($sql)) { echo "Nem tudom feltölteni a képet az adatbázisba!"; } else { echo "Feltöltés ok"; } } } } ?>
===== Megjelenítő ===== ===== Linkek ===== * http://dev.mysql.com/doc/refman/5.5/en/blob.html