Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odczyt obrazków z bazy - jak ?
m72
post 22.07.2015, 15:17:27
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 25.12.2012

Ostrzeżenie: (0%)
-----


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:
Go to the top of the page
+Quote Post
Crozin
post 22.07.2015, 15:24:29
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Crozin 22.07.2015, 16:46:49
Go to the top of the page
+Quote Post
kartin
post 22.07.2015, 16:19:14
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
m72
post 22.07.2015, 18:33:47
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 25.12.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kartin
post 22.07.2015, 20:27:34
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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.



--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
m72
post 22.07.2015, 20:40:31
Post #6





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 25.12.2012

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
kartin
post 22.07.2015, 20:54:27
Post #7





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2024 - 05:33