+ Rispondi alla Discussione
Risultati da 1 a 8 di 8

download di una immagine da Mysql

Ultimo Messaggio di Joshua Whopper il:
  1. #1
    User
    Data Registrazione
    Nov 2011
    Località
    Bologna
    Messaggi
    18

    download di una immagine da Mysql

    Ciao a tutti,
    ho letto i post relativi al mio problema, ma sigh non ho trovato la soluzione.

    Ho memorizzato una immagine jpg in una tabella mysql utilizzando i vari tutorial prsenti in rete e anche nel forum
    Questa immagine dovrebbe poi essere prelevata ed inserita insieme ad altre informazioni in una tabella.
    Il problema è che se utilizzo lo script del tutorial l'mmagine viene mostrata, mettendo lo stesso pezzo di codice nel mio scripo ottengo

    "The image ........./comments.php cannot be displayed because it contains errors."
    (ho dovuto sostituire il link con dei puntini perchè non essendo un utente premium non posso farlo)

    Il file comments.php contiene il mio script e viene lanciato cliccando su di un form appartenente ad un altro script. Se non mostro immagini prelevate dal db tutto funziona correttamente.

    Anyway... il codice del tutorial è il seguente

    Codice:
    <?php
    $db = mysqli_connect($db_host,$db_user, $db_password) or die('Connessione a MySql fallita. Controllare i dati di configurazione: ' . mysqli_connect_error($db));
    mysqli_select_db($db,$db_name) or die('Selezione del DB fallita. Controllare il nome del DataBase: ' . mysqli_error($db));
     
    $result = mysqli_query($db, "SELECT * FROM $db_table WHERE idx = 1 " ) or die("Invalid query: " . mysql_error($db));
            
    while ($row = mysqli_fetch_array($result))
    { 
            $filename = $row['filename'];
            $filesize = $row['sizefile'];        
            // set the header for the image
            header("Content-type:". $row['mimetype']);
            echo $datafile = $row['datafile'];
            
    } 
    mysqli_close($db);
    ?>
    mentre il mio script è il seguente
    Codice:
    <?php
    
    echo "<br />
    <br />
    
    <fieldset>
    <legend>Dati del libro</legend>
    <br />
    <div style='height: 570px; overflow-y: scroll; '>    
    <table cellspacing = '0' cellpadding = '6' summary ='doing' width = '90%'>";
    
    $z_index = $_POST['index'];
    
    
    $db = mysqli_connect($db_host,$db_user, $db_password) or die('Connessione a MySql fallita. Controllare i dati di configurazione: ' . mysqli_connect_error($db));
    mysqli_select_db($db,$db_name) or die('Selezione del DB fallita. Controllare il nome del DataBase: ' . mysqli_error($db));
    
    /**** Searching for the cover *****/ 
    
    $db_table = 'cover';
    $result = mysqli_query($db,"SELECT * FROM $db_table WHERE idx = '$z_index' ");
    $row_cnt = mysqli_num_rows($result);
    if ($row_cnt != '0')
    {
    while ($row = mysqli_fetch_array($result))
    {
    header("Content-type:".$row['mimetype']);
    echo $row['datafile'];
    
    }
    
    }
    /********/
    .......
    resto dello script
    ?>
    Ho modificato php.ini mettendo output_buffering = on altrimenti ottengo Warning: Cannot modify header information - headers already sent by (output started at xxxxxxxxxxxxxx)


    Originariamente il file comments.php conteneva tutti gli header di html ma li ho eliminati per vedere se il problema era dovuto a quello

    Spero di non aver fatto troppa confusione

    Grazie fin da ora per ogni suggerimento

  2. #2
    Utente Premium
    Data Registrazione
    Jun 2010
    Messaggi
    265
    Credo ti convenga usare un tag <img> che richiami lo script php che invia su out solo l'immagine, nel modo che fai assieme all'immagine invii anche del testo e credo dia molto fastidio al browser.

  3. #3
    User
    Data Registrazione
    Nov 2011
    Località
    Bologna
    Messaggi
    18
    Puoi suggerirmi come fare?
    Cmq... quello che mi fa impazzire è perchè con uno script funziona e con l'altro no. Può dipendere dal fatto che uno lo lancio direttamente da localhost mentre l'altro viene richiamato da un form?

  4. #4
    User Newbie
    Data Registrazione
    Sep 2010
    Messaggi
    4

    download di una immagine da Mysql

    Ciao,
    Nel secondo caso ti dava l errore ' Cannot modify header information - headers already sent by (output started at xxxxxxxxxxxxxx) ' perchè hai stampato qualcosa e dopo la stampa hai cercato di modificare l intestazione della risposta con header(...).

    una soluzione potrebbe essere quella di utilizzare 2 script diversi, uno per recuperare la tabella e uno per recuperare l immagine.
    Nel punto della tabella in cui va l immagine metti:
    <img src="url-script-immagine.php />

    Spero di esser stata chiara ?

  5. #5
    User
    Data Registrazione
    Nov 2011
    Località
    Bologna
    Messaggi
    18
    Il "Cannot modify header....." l'ho risolto modificando php.ini mettendo output_buffering = on
    Dopo proverò la tua soluzione e ti/vi farò sapere.

  6. #6
    User
    Data Registrazione
    Nov 2011
    Località
    Bologna
    Messaggi
    18
    Eccomi qua purtroppo con notizie non positive ma sempre migliori di ieri
    Ho modificato lo script come suggeritomi

    Codice:
    $result = mysqli_query($db,"SELECT * FROM $db_table WHERE idx = '$z_index' ");
    $row_cnt = mysqli_num_rows($result);
    if ($row_cnt != '0')
    {
    while ($row = mysqli_fetch_array($result))
    {
    echo"<a href='comments.php?imageid=<?php echo $row[id]?>'><img src='<?php echo $row[datafile]?>' /></a>";
    }
    }
    Non ho errori ma anzichè vedere l'immagine vedo il contenuto di datafile aka geroglifici.

    Qualche idea?

  7. #7
    User L'avatar di Francesco Di Caprio
    Data Registrazione
    Mar 2013
    Località
    Caserta
    Messaggi
    216
    Segui Francesco Di Caprio su Twitter Aggiungi Francesco Di Caprio su Google+ Aggiungi Francesco Di Caprio su Facebook Aggiungi Francesco Di Caprio su Linkedin
    Geroglifici... perché è in binario. Nell'SRC o metti un URL, oppure metti una coppia di chiavi-valori che specifica mimetype e contenuto in base64.

    Quindi il tuo echo diventa:

    Codice PHP:
    echo "<a href='comments.php?imageid=".$row[id]."'><img src='data:".$row[mimetype].";base64,".base64_encode($row[datafile])."' /></a>"
    Endelab - Web Development

  8. #8
    User
    Data Registrazione
    Nov 2011
    Località
    Bologna
    Messaggi
    18
    Funziona!!!!
    Grazie infinite

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.