RISOLTO Come posso leggere un file di tipo BLOB da DB e poi lavorarci su PHP ?

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

m3tt0

Nuovo Utente
Messaggi
112
Reazioni
13
Punteggio
45
Ciao a tutti, ho una domanda.
Dopo aver inserito tramite un form un file di tipo immagine, nel mio caso, nel database dovrei poi lavorare quel file riprendendolo dal DB e mostrandolo su una pagina web PHP, ho provato semplicemente a leggere il campo BLOB dalla base di dati ma il risultato è stato orribile in quanto non veniva letto come immagine ma come binario e quindi si vedeva a schermo una fila di numeri infiniti.
C'è per caso un metodo, una funzione, qualcosa per leggere correttamente il file e poi mostrarlo ?
Grazie in anticipo.
 
La base è questa
PHP:
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

Poi tu te la devi adattare per le tue esigenze.
Io solitamente preferisco mettere nel db un campo relativo all'estensione del file (ottenibile durante il caricamento del file stesso) così da impostare data:image/jpeg; con il corretto formato di immagine (jpg/gif/png/etc...)
 
La base è questa
PHP:
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo '';

Poi tu te la devi adattare per le tue esigenze.
Io solitamente preferisco mettere nel db un campo relativo all'estensione del file (ottenibile durante il caricamento del file stesso) così da impostare data:image/jpeg; con il corretto formato di immagine (jpg/gif/png/etc...)

grazie mille, proverò così allora
 
Devi adattarlo alla tua attuale configurazione db e come ottieni il resto dei dati sia chiaro!
 
IMHO la vera domanda da porsi e' cosa ci fa un blob in un db...
 
IMHO la vera domanda da porsi e' cosa ci fa un blob in un db...
La mia è solo sperimentazione per trovare una soluzione ottimale a ciò che mi serve, per ora ho sempre tenuto all'interno del db un campo che memorizzava la root di ogni immagine che mi serviva sul sito web, ma volevo una cosa diversa, così volevo provare ad utilizzare i blob, non credo ci sia una blasfemia in questo.
 
La base è questa
PHP:
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

Poi tu te la devi adattare per le tue esigenze.
Io solitamente preferisco mettere nel db un campo relativo all'estensione del file (ottenibile durante il caricamento del file stesso) così da impostare data:image/jpeg; con il corretto formato di immagine (jpg/gif/png/etc...)
Ciao, faccio riferimento a questo messaggio per dire che ho provato questa sintassi proposta ma senza cambiamenti, provo a pubblicare parte del codice così magari è più di aiuto.
grazie ancora.

PHP:
   <body id="top">
   <?php
    $nominativo = $_POST["nominativo"];
            $x = explode(" ",$nominativo);
           
            $connection = mysqli_connect ("127.0.0.1" ,"locale" ,"", "5itiB") or die ("Connessione rifiutata");
            mysqli_select_db ("5itiB", $connection);
            $query = "select * from Studenti where (nome ='$x[0]' and cognome = '$x[1]') or (nome ='$x[1]' and cognome = '$x[0]')  ";
            $risultato = mysqli_query ($connection,$query) or die ("query sbagliata 1");
            $row0 = mysqli_fetch_array($risultato);      
     if (mysqli_num_rows($risultato) == 0)
                echo "<h1> $x[0] $x[1] non è presente nel database</h1>" ;
               
            else
            {
     echo"<div class='page-content'>";
       echo"<div>";
  echo"<div class='profile-page'>";
   echo"<div class='wrapper'>";
     echo"<div class='page-header page-header-small' filter-color='green'>";
       echo"<div class='page-header-image' data-parallax='true' style='background-image: url(/immagini/background.png)'></div>";
       echo"<div class='container'>";
         echo"<div class='content-center'>";
         if($row0[immagini] != NULL || $row0[immagini] != '')
         {
               //sintassi consigliata da Moffetta88
                echo"<div class='cc-profile-image'><a href='#'><img src=\"data:image/png;base64,'.base64_encode('$row0[immagini]').' \" alt='Image'/></a></div>"; 
            }
        else
                {
          echo"<div class='cc-profile-image'><a href='#'><img src='/immagini/imageNotFound.png' alt='Image'/></a></div>";
               
       }
 
Ultima modifica:
Cambia questa
echo"<div class='cc-profile-image'><a href='#'><img src=\"data:image/png;base64,'.base64_encode('$row0[immagini]').' \" alt='Image'/></a></div>"; //sintassi consigliata da Moffetta88
con questa
PHP:
echo '<div class="cc-profile-image"><a href="#"><img src="data:image/jpg;base64,'.base64_encode($row0[immagini]).'" alt="Image"/></a></div>';

Gli apici ed i doppi apici sono importanti, poi, bastava che premevi F12 nel browser per vedere cosa ti stava stampando l'html..

1621886863512.webp
1621886883895.webp
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top