Mysql
 sql >> Database >  >> RDS >> Mysql

Immagine dal database MySQL non stampabile

È perché il tuo browser non si rende conto che i dati che stai inviando sono un'immagine. Quando il tuo server web risponde a una richiesta, ha specificato il tipo di contenuto che è (da cui l'intestazione Content-Type) e la tua pagina viene specificata come testo. Questo è il motivo per cui vengono utilizzati i tag immagine:ti danno la possibilità di dire "incorpora quest'altra risorsa in questa posizione". Quello che fa il tuo codice è scaricare i dati binari dell'immagine come testo sullo schermo, non quello che vuoi.

Quello che devi fare è creare un'altra pagina PHP, come getImage.php, che accetti un parametro $_GET (cioè un ID riga). Quella pagina interrogherà quindi il database e echo i dati dell'immagine, specificando l'intestazione Content-Type.

Ecco un codice proof of concept che ho scritto senza test e che non gestisce SQL injection o una serie di altri potenziali problemi.

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'];
}

Ora, quando crei il tuo HTML nel tuo file esistente, faresti qualcosa del genere:

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

Modificare di conseguenza i nomi delle colonne SQL.

Saluti.