2013-06-07 12 views
5

Próbowałem połączyć przechowywany obraz (dane blob) wewnątrz MySQL DB do PHP, ale jedyną rzeczą, jaką osiągnąłem, była cała strona znaków. Oto co zrobiłem:Dane BLOB jako atrybut SRC znacznika obrazu

$query = "SELECT image FROM uploads WHERE id = {$id}"; 
$image_array = mysql_query($query, $connection); 
$row = mysql_fetch_array($image_array); 
$image = $row['image']; 

echo $image; 
// echo base64_decode($content); 

Wyświetla surowe dane, w jaki sposób są przechowywane. Chciałbym połączyć go ze znacznikiem HTML lub przynajmniej wyświetlić go na stronie, gdzie wyświetlam dużo innych rzeczy do tego nagłówka ("Content-type: image/png"); nie jest rozwiązaniem dla mnie.

Każda rada?

+0

Możesz znaleźć dokładny SO odpowiedzieć [tutaj] (http: // stackoverflow .pl/questions/13225726/i-need-my-php-page-to-show-my-blob-image-from-mysql-database) – NullPointer

Odpowiedz

8

Aby wyświetlić obraz poprawnie wystarczy umieścić jeden nagłówek z Content-type: image/png przed echo

header("Content-type: image/png"); 
echo (base64_decode($row['image'])); 

Jeśli chcesz umieścić zamiast w tagu obrazu wystarczy użyć tego kodu

echo '<img src="data:image/png;base64,' . $row['image'] . '" />'; 
1

Musisz podać odpowiednie nagłówki, w przeciwnym razie strona nie będzie wiedzieć, co wysyłasz.

// define results into variables 
$name=mysql_result($result,0,"file_name"); 
$size=mysql_result($result,0,"file_size"); 
$type=mysql_result($result,0,"file_type"); 
$content=mysql_result($result,0,"file_stream"); 

// give our picture the proper headers...otherwise our page will be confused 
header("Content-Disposition: attachment; filename=$name"); 
header("Content-length: $size"); 
header("Content-type: $type"); 
echo $content; 
0

Powinieneś użyć czegoś, co nazywa się "obrazem śródliniowym". Użyj tego kodu, aby wyświetlić obraz na stronie, asssuming zmienną $ base64 zakodowany obraz zawiera dane:

<img src="data:image/png;base64,<?php echo $image; ?>" alt="Larry" /> 

Źródło: https://en.wikipedia.org/wiki/Data_URI_scheme

Powiązane problemy