Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obraz z bazy danych MySQL nie jest drukowany

Dzieje się tak, ponieważ Twoja przeglądarka nie zdaje sobie sprawy, że dane, które odsyłasz, to obraz. Gdy serwer WWW odpowiada na żądanie, określa typ treści (stąd nagłówek Content-Type), a strona jest określana jako tekst. Dlatego używa się tagów graficznych:dają one możliwość powiedzenia „umieść ten inny zasób w tej lokalizacji”. To, co robi Twój kod, to zrzucanie danych binarnych obrazu jako tekstu na ekran – nie tego, czego chcesz.

To, co musisz zrobić, to utworzyć kolejną stronę PHP, taką jak getImage.php, która akceptuje parametr $_GET (tj. identyfikator wiersza). Ta strona następnie prześle zapytanie do bazy danych i echo dane obrazu, określając nagłówek Content-Type.

Oto kilka przykładów kodu koncepcyjnego, który napisałem bez testowania i który nie obsługuje wstrzykiwania SQL ani szeregu innych potencjalnych problemów.

header('Content-Type: image/png'); //change to the proper content type for your type of image

$imageID = mysql_real_escape_string($_GET['q']);

$result = mysql_query(sprintf('SELECT file_data FROM images2 WHERE id="%s" AND file_data IS NOT NULL LIMIT 1', $_GET['q']));

if(mysql_num_rows($result) !== 1)
{
  //a row wasn't found, so 404
  header('HTTP/1.0 404 File Not Found');
}
else
{
  $row = mysql_fetch_object($result);
  echo $row['file_data'];
}

Teraz, gdy budujesz kod HTML w istniejącym pliku, możesz zrobić coś takiego:

echo '<td class="sitename2"><img src="./getImage.php?q='.$row["id"].'"/></td>';

Dostosuj odpowiednio nazwy kolumn SQL.

Pozdrawiam.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy muszę używać narzędzia HTML Purifier, jeśli usuwam tagi/konwertuję je na encje HTML?

  2. mysql nakłada się na dwie tabele w znacznikach czasu

  3. Plik a baza danych dla wydajności przechowywania w aplikacji do czatu

  4. Jak zapobiec duplikowaniu wstawek do tabeli

  5. pomóż mi zrozumieć now() dla mysql bieżącego czasu i jego stref czasowych