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

visualizzazione di un'immagine memorizzata in un BLOB MySQL

Bene ... la risposta al motivo per cui farà ciò che hai descritto è a causa del tuo uso della funzione header(). In PHP, non è possibile stampare nulla prima di una chiamata di intestazione poiché ciò indirizza il server Web a preparare un'intestazione di contenuto. Di solito quelli sostituiscono completamente tutti i contenuti.

In secondo luogo, vorrei ricordare che la memorizzazione di immagini in un database è solitamente una cattiva idea per due motivi.

  1. Ha un impatto significativo sulle prestazioni e sul rendering.
  2. Devi scrivere il codice per rendere i dati del BLOB invece di visualizzare semplicemente l'immagine stessa.

Il metodo preferito per la presentazione delle immagini basata su database sarebbe che le immagini fossero archiviate in una directory e i loro nomi di file archiviati nel database. Ora, quando desideri visualizzare le immagini, devi semplicemente eseguire il polling del DB per quali nomi di file desideri visualizzare e quindi includere semplicemente il nome del file in un attributo HTML.

Anche l'esecuzione è molto più veloce.

Inoltre, vorrei sottolineare che se desideri che uno script esegua effettivamente il tuo rendering, vorresti che lo script definisse l'intestazione e quindi echi o stampi il blob dell'immagine dopo aver definito l'intestazione.

Tieni presente che quando crei il tuo tag html... che nell'attributo src, lo faresti qualcosa di più simile a questo;

<img src="image.php?id=<some_number>">

Ora, il tuo file image.php sputerà i dati dell'immagine nel tag.