Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]pobranie obrazu z bazy
Forum PHP.pl > Forum > Przedszkole
agata
Witam,
mam problem z pobraniem obrazu z bazy, próbuje już jakiś czas na różne sposoby jakie tylko znajduje w necie ale nie udało mi się rozwiązać problemu.

W MF zwraca mi adres pliku, nie obraz; w IE - pusta strona, Chrome - ikona brak obrazka;

Plik jest dodany do bazy, w bazie jest zapisany jako mediumBlob.

Poniżej kod dodawania do bazy (który wykonuje się ok - obraz jest dodawany) oraz kod pobierania obrazu:
  1.  
  2.  
  3. $uploadfile = $_FILES['picture']['tmp_name'];
  4. $uploadname = $_FILES['picture']['name'];
  5. $uploadtype = $_FILES['picture']['type'];
  6.  
  7. $tempfile = fopen($uploadfile, 'rb');
  8. $filedata = fread($tempfile, filesize($uploadfile));
  9. $filedata = addslashes(htmlspecialchars($filedata));
  10.  
  11. $query = mysql_query("Insert INTO zdjecia (dane, typmime, image)Values('$uploadname','$uploadtype','$filedata')") or die (mysql_error());
  12.  
  13. if ($query){
  14. echo 'ok';
  15. }
  16. else{
  17. echo'nie ok';
  18. }

  1. mysql_connect($host, $user, $password, $db) or die (mysql_error());
  2. mysql_query("Set Names 'utf8'");
  3. mysql_query("Set collation_connection = utf8_polish_ci");
  4.  
  5. header("Content-type: image/jpg, image/jpeg, image/gif");
  6.  
  7. $result = mysql_query("SELECT * FROM zdjecia where id='1'");
  8. $ile = mysql_num_rows($result);
  9. for($i=0; $i<$ile; $i++){
  10.  
  11. $row = mysql_fetch_array($result);
  12. echo base64_decode($row['zdjecie']).'zdj';//
  13. }

Proszę o pomoc, nie wiem jak to rozwiązać?
Michaxxx
Spróbuj
  1. echo "<img src=".$row['zdjecie']."/>

agata
  1. echo "<img src=".base64_decode($row['zdjecie'])."/>"; // jest taki sam efekt z base64_decode i bez


nic to nie dało, efekt taki sam, w MF wyskakuje komunikat ->"Obrazek "http://localhost/zad3/test.php" nie może zostać wyświetlony, ponieważ zawiera błędy."
redelek
może tak

  1. $query="SELECT zd_Zdjecie FROM tw_ZdjecieTw WHERE zd_Id=$id";
  2.  
  3. $result=mssql_query($query);
  4.  
  5. $data=mssql_fetch_array($result);
  6.  
  7. $data = base64_decode($data[zd_Zdjecie]);
  8.  
  9. $im = imagecreatefromstring("$data");
  10.  
  11. header('Content-type: image/jpeg');
  12.  
  13. imagejpeg($im);


Głównie chodzi o ten nagłówek header smile.gif
agata
brak efektu :/

ale też mi się wydaje że może być jakiś problem z nagłówkami, tylko jeśli tak to jaki sad.gif
redelek
A nie lepiej zdjęcia trzymać poza bazą, a w bazie link do niego?
działa to szybciej, baza jest mniejsza ?

Ja osobiście takie rozwiązania stosuję, zdjęcie na dysk , a link do bazy.
agata
na pewno lepiej, jednak nie wychodził mi zapis pliku img i poddałam się myśląc że spróbuję trzymać je w bazie, jednak jak widać dodawanie mi się udało ale tym razem nie mogę odczytać obrazka, :/
redelek
A zmień miejsce nagłówka

  1. mysql_connect($host, $user, $password, $db) or die (mysql_error());
  2. mysql_query("Set Names 'utf8'");
  3. mysql_query("Set collation_connection = utf8_polish_ci");
  4.  
  5.  
  6.  
  7. $result = mysql_query("SELECT * FROM zdjecia where id='1'");
  8. $ile = mysql_num_rows($result);
  9. for($i=0; $i<$ile; $i++){
  10.  
  11. $row = mysql_fetch_array($result);
  12. header("Content-type: image/jpg, image/jpeg, image/gif"); // TU
  13. echo base64_decode($row['zdjecie']).'zdj';//
  14. }


jeszcze taki link http://www.mwasif.com/2007/4/save-image-in-mysql-with-php/
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.