Visualizzazione risultati 1 fino 10 di 10

Discussione: Decodifica immagine presente nel database

  1. #1
    Guest

    Predefinito Decodifica immagine presente nel database

    Tramite lo script sottostante riesco ad inserire tranquillamente le immagini nel database.

    Codice PHP:
    $file_path = $_FILES['userfile']['tmp_name'];
    $img = base64_encode(file_get_contents($file_path));
    Solo che quando lo decodifico mi restituisce un immensa stringa fatta di lettere e numeri che ovviamente non fanno mostrare l'immagine nel browser.

    ecco il pezzo di script

    Codice PHP:
    $sql = mysqli_query($db, "SELECT immagine, tmp_name FROM utenti WHERE email = '$username'") or die(mysqli_error());
    $row = mysqli_fetch_assoc($sql);

    $tipo = $row['tmp_name'];
    $immagine = $row['immagine'];
    base64_decode('$immagine');

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Devi comunicare al browser il MIME type della risorsa, altrimenti si considera text/html. Quindi per esempio:

    Codice PHP:
    header('Content-Type: image/jpeg');


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Si, infatti l'ho inserito, ma scompare tutta la pagina e si apre la finestrella per scaricare l'immagine.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,270

    Predefinito

    Non puoi "scrivere" un'immagine direttamente nella pagina: l'immagine deve comunque esser un file (nel tuo caso, un file PHP che prende i dati dal database).

    Nella pagina, quindi, dovrai fare una cosa del tipo:

    Codice HTML:
    <img src="./immagine.php">
    Quindi, aprendo il file "immagine.php" si deve visualizzare solo l'immagine, come fosse una jpg o png o altro.

    Ciao!

  5. #5
    Guest

    Predefinito

    Sicuramente dovrà essere una cavolata, non lo metto in dubbio, ma per il momento non riesco ad arrivarci, la gestione delle immagini non riesco proprio a comprenderla.

  6. #6
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da australiafever Visualizza messaggio
    Si, infatti l'ho inserito, ma scompare tutta la pagina e si apre la finestrella per scaricare l'immagine.
    Hai un link da darci?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  7. #7
    Guest

    Predefinito

    Io potrei anche darvi il link ma necessita di registrazione obbligatoria per vedere la pagina, è un profilo privato, che necessita come ogni profilo di una foto utente.

    EDIT: Alla fine affidandomi ad un buon libro PHP, MySQL, ce l'ho fatta, però ho optato nell'inserire le varie immagini in una directory sul server, lasciando perdere per ora il salvataggio e recupero dal database.

    Grazie a tutti e due per il vostro supporto.
    Ultima modifica di australiafever : 22-08-2013 alle ore 21.25.49

  8. #8
    Guest

    Predefinito

    Io uso questo metodo: salvo l'immagine con un nome random di 100 caratteri. Salvo quella stringa nel database collegandola all'utente. Quando mi serve leggo il codice e richiamo l'immagine.

  9. #9
    Guest

    Predefinito

    Anche questa idea non è male. Grazie!

  10. #10
    Guest

    Predefinito

    Dopo vari tentativi, sono riuscito ad inserire l'immagine nel database in questa maniera:

    Codice PHP:
    //Esce se il file non è stato scaricato veramente.

    if(!is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    exit(
    'Non esiste alcun file da caricare!');

    }

    $uploadfile = $_FILES['userfile']['tmp_name'];
    $uploadname = $_FILES['userfile']['name'];
    $uploadtype = $_FILES['userfile']['type'];
    $uploaddesc = $_POST['desc'];

    // Apre il file per la lettura binaria ('rb')

    $tempfile = fopen($uploadfile, 'rb');

    // Legge l'intero file in memoria usando la funzione di PHP
    // filesize, per ottenere la dimensione.

    $filedata = fread($tempfile, filesize($uploadfile));

    //Prepara l'inserimento nel database aggiungendo i backslash
    // prima dei caratteri speciali.

    $filedata = addslashes($filedata);

    // Crea la query SQL

    $queimg = mysqli_query($db, "INSERT INTO immagini SET email = '$username', filename = '$uploadname', mimetype = '$uploadtype', description = '$uploaddesc', filedata = '$filedata'");
    e riesco anche a recuperarla tramite questo script

    Codice PHP:
    $sqlimg = "SELECT filename, mimetype, filedata FROM immagini WHERE email = '$username'";

    $imgres = mysqli_query($db, $sqlimg);
    if(!
    $imgres) die ('Errore Database:' . mysqli_error());

    $file = mysqli_fetch_array($imgres);
    if(!
    $file) {
    exit (
    'File non trovato');
    }

    $filename = $file['filename'];
    $mimetype = $file['mimetype'];
    $filedata = $file['filedata'];
    $disposition = 'inline';

    if(
    $action == 'dnld')
    $disposition = 'attachment';

    header("content-disposition: $disposition; filename=$filename");
    header("content-type: $mimetype");
    header("content-length:" . strlen($filedata));

    echo
    $filedata;

    exit();
    Unico problema è che scompare tutta la pagina e rimane solo la foto in alto a sinistra su sfondo bianco. Domanda: come faccio ad inserirla nella pagina senza far scomparire tutto? Grazie tante in anticipo.

    EDIT: Ora funziona scusate, ho seguito le istruzioni di Alemoppo, ma mi ero dimenticato di inserire il file di connessione al database, sarà l'orario. Grazie ancora.
    Ultima modifica di australiafever : 26-08-2013 alle ore 23.06.55

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •