Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczyt obrazków z bazy - jak ?
Forum PHP.pl > Forum > PHP
m72
Witam, problem jest z poprawnym wyświetleniem obrazka z bazy. Zamiast niego wyświetlają się surowe dane.
Próbowałem wielu sposobów z różnych forów ale żaden mi nie zadziałał.
Jak to powinno poprawnie wyglądać ?
  1. <!DOCTYPE html>
  2. <meta charset="UTF-8">
  3. </head>
  4. <?php
  5. include_once 'db.php';
  6. $stmt = $pdo -> prepare ('SELECT * FROM reklama');
  7. $stmt -> execute();
  8. while($image=$stmt->fetchAll(PDO::FETCH_ASSOC)) {
  9. //echo'<pre>';
  10. //print_r($image[0]);
  11. //echo'</pre>';
  12. //echo $image[0][data];
  13. echo ('<img src="data: image/jpeg;base64,'.$image[0][data].'"/>');
  14. }
  15. $stmt->closeCursor();
  16.  
  17. ?>
  18. </body>
  19. </html>


Efekt działania:
Crozin
Zapewne masz dane binarne pod $image[0][data], dlatego też będziesz musiał je zakodować base64_encode zgodnie z tym co podałeś w Data-URL-u.
kartin
Zasadniczo to nie przechowuje się plików w bazie danych lecz na dysku, a w bazie tylko ścieżkę do pliku.
Poza tym rozmiar danych po zakodowaniu base64 powiększa się o 1/3.
m72
A jak mam zakodować te dane ?
ja te obrazki wgrywam "manualnie" do bazy, z mysql-fronta, bez żadnych skryptów.
ps. bez base64 też są krzaki
kartin
Najlepiej nijak i nie przechowywać w bazie, ale jeśli bardzo sie upierasz na przechowywanie, to tak jak napisał Crozin przy użyciu base64_encode().
  1. echo '<img src="data:image/jpeg;base64,' . base64_encode($image[0]['data']) . '"/>';


Włącz sobie raportowanie wszystkich błędów i popraw je.

m72
Działa, dzięki !
Ale na koniec mi wytłumaczcie jeszcze o co chodzi z tym base64_encode.
Po co to encode dla zwykłego obrazka niekodowanego przy wyświetlaniu go w przeglądarce ?
kartin
Dlatego, że zadeklarowałeś, że będzie to base64:
<img src="data:image/jpeg;base64,…
Zadeklarowałeś to dlatego, że danych binarnych nie możesz od tak wpakować do HTML. Musisz przerobić je na tekst, a kodowanie base64 to jedna z takich metod.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.