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:
A képek tárolásának lehetőségei
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:
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;
A kategóriáknak persze lehetne külön táblázata, itt pedig ez csak egy idegenkulcs lenne.
<form action="feltolt.php" method="post" enctype="multipart/form-data"> <input name="userfile" type="file" /> <input type="submit" value="Feltölt" /> </form>
<?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"; } } } } ?>
<?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); ?>