2016-04-06 20 views
0

İyi Afternoon, hepiniz!PHP, MySQL görüntüsünü yazdırmıyor

"ID", "login", "pass" ve "image" (BLOB) adlı 4 sütunlu bir satır içeren bir tablonun bulunduğu bir veritabanım var. Kullanıcı kimlik doğrulaması ve benzeri bir sisteme sahibim ve kullanıcı tarafından kaydedilen görüntüyü üst çubukta gösterilmek istiyorum. Her şey şu ana kadar oldukça iyi çalışıyor, tek sorun veritabanı görüntü böyle baskı olmasıdır:

ÿØÿàJFIF``ÿÛC %# , #&')*)-0-(0%()(ÿÛC (((((((((((((((((((((((((((((((((((((((((((((((((((
ÿÀ€€"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’ 
“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3R 
ðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹º 

Detay: Ben NOTEPAD yılında veritabanına seçilen görüntüyü açtığınızda, yukarıda gösterilen aynı.

include "dbconnection.php"; 

$defaultpath = "img/avatar.png"; 

$sql = "SELECT * FROM `bg_users`"; 
$query = mysql_query($sql); 
$result = mysql_fetch_assoc($query); 

if (!isset($_SESSION)) { 

$_SESSION['UserImage'] = $result['image']; 

    print $_SESSION['UserImage']; 
} 
else { 

    echo "src='img/avatar.png'"; 
} 

?> 

image.php Yine, PHP ve MySQL arasındaki etkileşimi tamamen iyi. Sorun, PHP'nin dosyayı görüntü olarak yazdırmamasıdır. Ben image.php eklemek istediğim sayfa zaten bir başlık parametresi var çünkü header("Content-type: image/png"); yapamıyorum.

Bu konuda bana yardımcı olamaz mı? Ben çok memnun olurum

Teşekkür ederiz!

+5

veritabanında kaydetmek öneririz ** Öncelikle, görüntü ** HTML yazdırmak zorunda değilsiniz web sunucusu tarafından istendiğinde görüntüyü döndürdüğü bir yere işaret eden bir URL koydu ... –

+0

@AnttiHaapala doğru. Görüntüyü çıkarmak için ayrı bir PHP sayfasına ihtiyacınız var. Ayrıca, PHP'de içerik türünü bildirdiğinizden ve ob_flush() öğesini kullanarak görüntüyü çıkarmadan önce çıktı tamponunuzu temizlediğinizden emin olun. –

+1

Teknik olarak, * görüntüyü bir veri URI'si olarak verebilir *, ancak sadece işleri yavaşlatır. –

cevap

1

Her şeyden önce veritabanında görüntüleri blob olarak kaydedemedim, sadece bir klasörde saklamak ve veritabanında yolunu kaydetmek daha kolay.

bunu yolunuzu yapmak istiyorsanız

, aşağıdakileri yapın:

echo '<img src="data:image/png;base64,'.base64_encode($result['image']).'"/>'; 

Gerçi gerçekten kötü bir uygulamadır ve sayfa yükleme biraz yavaşlatabilir. Size veritabanı yapısı yeniden değerlendirmek ve doğrudan görüntüleri saklamak ve sadece

+0

dan alınmalı, eğer bu görüntü bir kaç pikselden daha fazla değilse, sayfa yükleme sırasında çok yavaş olacaktır. – bansi

+0

@bansi yup, bunun onaylanması gerektiğini söylemiyorum; ') ama evet, bunu net yapmak için sorumu düzenleyeceğim – Jester

+0

@Jester Yardımlarınız için teşekkür ederiz. Tabloyu söylediğiniz gibi yeniden değerlendiririm, görüntü dosyasını bir klasöre ve veritabanındaki yolu kaydetmek için kullanıcı kaydını tekrar yaparım. Tekrar teşekkürler. –