Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31

Discussione: Stampa di tipo BLOB

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    29

    Stampa di tipo BLOB

    Salve a tutti, in un database ho una tabella chiamata IMAGE che al suo interno ha come attributi
    nome 'nome dell'immagine caricata', dati 'il campo blob che la contiene', tipo 'se jpeg, png ecc'.
    Ho avuto vari problemi al caricamento ma non vi sto ad annoiare, il problema è ora riguardante la STAMPA.
    Allora, io eseguo le mie query e all'interno delle tre variabili ho i contenuti dei tre attributi per una sola chiave primaria che mi interessa, infatti se stampo ad esempio il NOME funziona.
    Per la stampa del BLOB dovrei fare echo $dati, e mi stampa una sequela di simboli lunghissimi.
    Aggiungo :
    Codice PHP:
    header("Content-Type:" $tipo);
    echo 
    $dati
    e nella pagina che carico mi dice "cannot modify header information - headers already sent by ....... e il percorso dell'header della pagina, nella riga dei tag <header></header>".
    Come cavolo stampo questo dannato BLOB?
    grazie mille a tutti voi, so che ho pubblicato un sacco di post però per ciascuno di questi avevo anche accuratamente cercato sull'intrarete, senza risultati.

  2. #2
    Io personalmente per stampare un immagine utilizzavo un modo abbastanza spartano :
    Inserivo un campo "link" di tipo varchar , che conteneva l' indirizzo (es. ../img/prodotto.png) e una volta richiamato (assegnandolo ad esempio allla var $linkimg) , utilizzavo un semplice :

    echo <img src="'.$linkimg.'"></img>

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    29
    Si ma in questo modo il percorso è soggettivo alla persona, un esterno che cerca sull'annuncio come può aprire un percorso di un altro computer, io infatti memorizzo all'interno del database l'immagine che carica l'utente in modo che ci sia un posto comune, ovvero la tabella image, e con questa posso stampare l'immagine conoscendo l'id dell'annuncio

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da alfredom15 Visualizza il messaggio
    Io personalmente per stampare un immagine utilizzavo un modo abbastanza spartano :
    Inserivo un campo "link" di tipo varchar , che conteneva l' indirizzo (es. ../img/prodotto.png) e una volta richiamato (assegnandolo ad esempio allla var $linkimg) , utilizzavo un semplice :
    Non è un modo spartano, è il modo corretto di procedere.

    Quote Originariamente inviata da MikelMJK Visualizza il messaggio
    Si ma in questo modo il percorso è soggettivo alla persona, un esterno che cerca sull'annuncio come può aprire un percorso di un altro computer, io infatti memorizzo all'interno del database l'immagine che carica l'utente in modo che ci sia un posto comune, ovvero la tabella image, e con questa posso stampare l'immagine conoscendo l'id dell'annuncio
    Semplicemente con PHP non puoi accedere alle cartelle del PC di un utente, per fortuna!

    Quando un utente carica un'immagine, questa va salvata in una cartella sul server, nella tabella del db salverai l'id dell'utente che ha fatto l'upload, il percorso della cartella sul server che contiene le immagini dell'utente e il nome del file, così puoi ricomporre il percorso all'occorrenza.

    Per esempio
    diciamo che il mio id sia 3 e che quando ho effettuato la registrazione sia stata creata la cartella (partendo dalla root del sito, quindi sul server, non sul mio PC) uploads/Alhazred.
    Effettuo il login ed accedo al form per inviare l'immagine pippo.jpg, la invio e lo script che riceve i dati prende l'immagine e la sposta nella cartella uploads/Alhazred, inoltre effettua una query di questo tipo (il percorso lo dovrai costruire in base alle informazioni dell'utente loggato)
    codice:
    INSERT INTO immagini (userid, immagine) VALUES (3, 'uploads/Alhazred/pippo.jpg')
    Così quando vuoi mostrare tutte le mie immagini puoi trovarle con la query
    codice:
    SELECT * FROM immagini WHERE userid=3
    e le potrai mostrare con un
    Codice PHP:
    foreach($immagini as $immagine//in cui $immagini contiene il risultato della query SELECT
    {
        echo 
    "<img src='/{$immagine['immagine']}' />";


  5. #5
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    29
    Si, non capisco benissimo cosa vuoi dire. La variabile $immagine contiene la query estratta dal campo BLOB? o è tutt'altro metodo e usi un varchar?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    L'immagine nel db non la salva proprio. Salva solo il link ($immagine) all immagine in un varchar o text
    No

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    29
    Eh invece con il campo BLOB e con l'inserimento che ho fatto mi carica proprio l'immagine con il peso ecc, ora vi mostro. forse ci siamo solo fraintesi
    Codice PHP:
    $nome_file_temporaneo $_FILES["file_inviato"]["tmp_name"];
    $nome_file_vero $_FILES["file_inviato"]["name"];
    $tipo_file $_FILES["file_inviato"]["type"];
    $dati_file file_get_contents($nome_file_temporaneo)
    ;
    $dati_file addslashes($dati_file);
    $id_esterno $_SESSION[id_announcement];
    $query "INSERT INTO image 
                   SET nome = '
    $nome_file_vero', 
                   tipo = '
    $tipo_file',
                   dati = '
    $dati_file',
                   id_announcement = '
    $id_esterno' "

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Lo so come funziona un campo BLOB, il problema è che si tratta di una pratica che non si usa, si raggiungono in poco tempo dimensioni immani per il db, che diventa lento.
    Nella soluzione che ti ho proposto non c'è alcun campo blob nel db.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    29
    eh avevo già provato con quello che intendi tu avevo un sacco di problemi di inserimento, non sono un granché a scrivere. Ho visto che con questa soluzione mi sono trovato bene, e poi, per dio, è un progetto per la tesina, non lo pubblicherò il sito, le immagini sono poche. Come stampo una tabella del genere? se no devo riscrivere tutto e non voglio più soffermarmi su 'sta roba delle immagini, scusa veramente, ma se dovessi pubblicarlo sicuramente seguirei quel metodo.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    header("Content-Type:" . $tipo);

    La funzione header() non deve essere preceduta da alcun tipo di output, altrimenti non funziona.

    Per output si intende qualsiasi carattere stampabile sulla pagina, anche uno spazio o un ritorno a capo.
    Quindi se nel codice c'è la stampa di uno qualsiasi di questi caratteri prima della funzione header(), questa non funzionerà.

    Esempio
    Codice PHP:
    /** non va bene **/
    echo 'pippo';
    header(...);

    /** non va bene **/
    <div>pippo</div>
    <?php
    header
    (...);
    ?>

    /** non va bene **/
    (qui un ritorno a capo)
    <?php
    header
    (...);
    ?>

    /** va bene **/
    <?php //questa è la prima riga del file
    header(...);
    ?>
    (qui tutto quello che ti pare)

    /** va bene **/
    <?php //questa è la prima riga del file
    //qualsiasi codice php che non preveda funzioni di stampa (echo, print ecc...)
    //anche ritorni a capo e righe vuote vanno bene, tanto non vengono stampate sul browser
    //poi
    header(...);
    ?>
    (qui tutto quello che ti pare)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.