Honlapon találtam kép feltöltése adatbázisba, gondolom kipróbálom. Ki is próbáltam, de a kép nem jelenik meg. JPG formátumú képet töltöttem fel az ürlapon. A monitoron az alabbi üzenet jelenik meg: A következő kép nem jelenithető meg, mert hibákat tartalmaz. Az adatbázis és a kódok a következőek:
PHP kód:
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);
?>
Könyvjelzők