Bu yazıda image dosyalarının veritabanında nasıl saklanacağını anlatacağım.
Veritabanında resim tutabilmek için tabloda ilgili alan blob veya long blob olarak seçilmeli. Adından da anlaşılacağı üzere long blob daha büyük dosyaları tutabiliyor.
NOT : resimupload.php - resimgoster.php ve siteler.sql dosyalarını yazının sonunda indirebilirsiniz.
Artık uygulamaya geçiyorum. Öncelikle bir tablo oluşturuyorum.
Şimdi yeni bir php dosyası oluşturarak içine kodlarımı yazmaya başlıyorum. Veritabanına resim upload edeceğimiz için form içinde File inputu ve submit inputu eklemem gerekiyor. Aşağıdaki kodları ekliyorum.
<form action="resimupload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image" /><br />
<input type="submit" name="submit" value="Yükle" />
</form>
Şimdi php kodlarını yazıyorum.
<?php
if(isset($_POST['submit']))
{
mysql_connect("localhost","root","");
mysql_select_db("blog");
$resim_adi = mysql_real_escape_string($_FILES["image"]["name"]);
$resim_veri = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
echo $resim_veri;
}
?>
Sayfayı çalıştırıyorum ve bir resim seçip Yükle butonuna tıklıyorum. Karşıma aşağıdaki gibi resmin kodları geliyor. Yapmam gereken bu kodu yani $resim_veri değişkenini blob türündeki tabloya kaydetmek.
<?php
if(isset($_POST['submit']))
{
mysql_connect("localhost","root","");
mysql_select_db("blog");
$resim_adi = mysql_real_escape_string($_FILES["image"]["name"]);
$resim_veri = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
$resim_turu = mysql_real_escape_string($_FILES["image"]["type"]);
if(substr($resim_turu,0,5) == "image")
{
mysql_query("insert into siteler(site_adi,resim) values('Google','$resim_veri')");
}
else
{
echo "Sadece resim yüklenebilir.";
}
}
?>
Eklenen resim tabloda aşağıdaki gibi gözüküyor.
Şimdi veritabanına eklediğimiz veriyi sayfada gösterelim. Yeni bir php sayfası oluşturuyorum. (resimgoster.php) Aşağıdaki kodları yazıyorum.
<?php
mysql_connect("localhost","root","");
mysql_select_db("blog");
if(isset($_GET['id']))
{
$id = mysql_real_escape_string($_GET['id']);
$sorgu = mysql_query("select * from siteler where id='$id'");
while($cek = mysql_fetch_assoc($sorgu))
{
$resim_veri = $cek["resim"];
}
header("content-type: image/png");
echo $resim_veri;
}
else
{
echo "Hata !!!";
}
?>
Son olarak ilk upload işleminin gerçekleştiği sayfaya giderek
<img src="resimgoster.php?id=5" />
satırını ekliyorum. Sayfayı çalıştırdığımda veritabanındaki resim gözükecektir.
İyi çalışmalar ...
Dosyalar (resimupload.php, resimgoster.php, siteler.sql)
3 yorum:
bunu tinymce editörde nasıl kullanabiliriz?
meraba ben bu kodu kullanamam
"header("content-type: image/png");"
bütün sayfayı değiştiremem onun yerine ne kullanabilirim
Hocam resmi yüklüyorum. Resim geliyor. Peki ikinci resim gelince sayfa bozuluyor bunları daha düzgün nasıl getiririm sayfama. Mesela alt satırda gostersin
Yorum Gönder