oktatas:programozas:php:php_kepek_tarolasa
−Tartalomjegyzék
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
<form action="feltolt.php" method="post" enctype="multipart/form-data"> <input name="userfile" type="file" /> <input type="submit" value="Feltölt" /> </form>
Feltöltő
- feltolt.php
<?php if(!isset($_FILES['userfile'])) { echo '<p>Válassz egy fájlt</p>'; } 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ő
- leker.php
<?php $user = "luser"; $pass = "titok"; mysql_connect("localhost", $user, $pass) or die(mysql_error()); mysql_select_db("test"); $sql = "select kep from kepek where id=1"; $res = mysql_query($sql) or die("Hiba a lekérés során: ". mysql_error()); header("Content-type:image/jpeg"); echo mysql_result($res, 0); ?>
Linkek
oktatas/programozas/php/php_kepek_tarolasa.txt · Utolsó módosítás: 2019/08/22 10:33 szerkesztette: admin