Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Recuperare immagini da MySQL

    Buon giorno, come da titolo ho problemi a recuperare un'immagine inserita in un database.
    Questo il codice usato:

    UPLOAD
    Codice PHP:
    if (isset($_POST['upload']) && trim($_POST['upload'])=="Carica")
        {
            if (
    $_FILES['new_photo']['size'] < 10485760)
            {
                if (
    $_FILES['new_photo']['error'] == UPLOAD_ERR_OK)
                {
                    if (
    $_FILES['new_photo']['type'] == 'image/jpeg' || $_FILES['new_photo']['type'] == 'image/gif' || $_FILES['new_photo']['type'] == 'image/png')
                    {
                        
    $dati_file addslashes(file_get_contents($_FILES['new_photo']['tmp_name']));
                        
                        
    mysql_query("UPDATE user_info SET photo='".$dati_file."' WHERE id_user='".$id_user."'");
                    }
                }
            }
        } 
    Ovviamente ho problemi con l'estrazione, se faccio echo $dati_file; mi mostra una serie di simboli strani.

  2. #2

  3. #3
    1) non si salvano le immagini nel database a meno che tu non sappia con assoluta certezza costa stai facendo. Anzi, neanche in quel caso. Si salvano nel filesystem e nel db ci metti solo la path

    2) visto che usi file_get_contents tu stai salvando il file in binario nel database. Quindi se poi da query recuperi il campo e fai echo $dat_file, non vedi l'immagine ma vedi il binario. Per rivedere l'immagine devi

    Codice PHP:

    header
    ('Content-Type: image/jpeg'); //o il tipo di immagine che è
    echo $dati_file 
    ovviamente così facendo non puoi farla nella pagina attuale che contiene html e quant'altro, ma devi fare una pagina a parte che faccia solo l'estrazione dell'immagine e l'echo cui sopra e stampare l'immagine con

    Codice PHP:

    [img]tuapagina.php?id=XXX[/img
    e alla fine dovresti vedere correttamente la tua immagine.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    So come si caricano files su server, ma per le mie esigenze stavolta ho bisogno di assegnare una foto ad ogni utente. Non c'è un modo di visualizzarla normalmente all'interno della pagina?

  5. #5
    Originariamente inviato da AleVale94
    So come si caricano files su server, ma per le mie esigenze stavolta ho bisogno di assegnare una foto ad ogni utente. Non c'è un modo di visualizzarla normalmente all'interno della pagina?
    no. vedi punto due. controlla che le tue esigenze siano congrue
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Ma scusa, in questo caso siti come Facebook, Twitter, ecc come fanno? Per visualizzare le foto normalmente, se non ho capito male, è necessario che siano caricate sul server, no? Ma nel caso in cui il nome di una foto esistesse già sul server? Facebook ha quasi 700 milioni di utenti, mi sembra strano che ogni foto sia univoca

    A questo punto chiedo spiegazioni su questo, il risultato che vorrei ottenere è lo stesso di Facebook.

  7. #7
    Originariamente inviato da AleVale94
    Ma scusa, in questo caso siti come Facebook, Twitter, ecc come fanno? Per visualizzare le foto normalmente, se non ho capito male, è necessario che siano caricate sul server, no? Ma nel caso in cui il nome di una foto esistesse già sul server? Facebook ha quasi 700 milioni di utenti, mi sembra strano che ogni foto sia univoca

    A questo punto chiedo spiegazioni su questo, il risultato che vorrei ottenere è lo stesso di Facebook.
    non ho idea di come facciano facebook e co. Prendiamo il caso in cui sul db vengano salvate le path e il file nel filesystem...basta rinominare il file con l'id univoco nel database, e non hai problemi di collisioni di nomi.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Mmm è vero, non ci avevo pensato. Quindi, in conclusione dovrei fare un'altra tabella contenente tutte le foto del sito e ad ogni riga inserire "ID" e "percorso"?

  9. #9
    Originariamente inviato da AleVale94
    Mmm è vero, non ci avevo pensato. Quindi, in conclusione dovrei fare un'altra tabella contenente tutte le foto del sito e ad ogni riga inserire "ID" e "percorso"?
    Oltre a quanto detto da Santino io vorrei aggiungere alcune cose.

    I file possono essere tecnicamente salvati nel database nei campi BLOB (e simili) ma questo io non lo farei per una ragione fondamentale:
    i file possono essere anche di discreta dimensione e "intasare" il database con una mole di dati così massiccia non mi và.
    Conviene sempre salvarli sul file system e nel db avrai una tabella img_utenti con:
    id_foto
    id_utente_associato_alla_foto
    path_della_foto

    L'univocità della foto la puoi garantire rinominando in fase di caricamente il file con un nome da te stabilito che hai assoluta certezza che sia univoco. ad esempio:
    Codice PHP:
    $cartella_in_cui_salvare '/img_utenti/';
    $nuovo_nome_file $id_utente.time().'.'.$estensione_immagine;
    move_upload_file($percorso_cartella_temporanea$cartella_in_cui_salvare.$nuovo_nome_file);
    $query "INSERT INTO img_utenti SET
    id_utente_associato_alla_foto='
    $id_utente',
    path_della_foto='
    $cartella_in_cui_salvare.$nuovo_nome_file'"
    ... credo che sia in linea con quanto intendeva Santino.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  10. #10
    Certo, avevo già fatto in questo modo
    Era solo perchè avevo bisogno di associare una foto profilo ad ogni utente, ma ho fatto col percorso sul server e ho ottenuto lo stesso un ottimo risultato.

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.