Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    6

    Caricare un file su database mysql

    Salve a tutti.
    Sto caricando dei documenti su un database mysql attraverso un form. Quando però li vado a recuperare, non vengono tutti visualizzati correttamente.
    I file txt e pdf vengono recuperati bene, mentre le immagini e i .doc no.
    Per quanto riguarda i .doc mi si apre una finestra per la conversione, ma qualsiasi opzione scelgo, il fle non viene caricato correttamente.
    Il linguaggio dinamico di programmazione è il Php, il database è il Mysql.

    Ho creato la tabella:
    codice:
    CREATE TABLE tabella_file
    (
       id_relazione   INT (10) NOT NULL auto_increment,
       Nome VARCHAR (255) default NULL,
       Tipo VARCHAR (128) default NULL,
       Dati BLOB,
       PRIMARY KEY  (id_relazione )
    )
    Per l'inserimento del file ho utilizzato:
    codice:
    $error = $_FILES["file_inviato"]["error"];
    echo "
    Error->" .$error ;
    
    // Verifico eventuali problemi nell'upload del file
    if((!isset($_FILES["file_inviato"])) || ($_FILES["file_inviato"]["error"] != UPLOAD_ERR_OK))
    { 
       echo "Errore nell'invio del file. Riprova!";
       echo UPLOAD_ERR_OK;
       exit;
    }
    
    /* Connessione e selezione del database */
    $db = new MysqlClass();
    $db->connetti();
    
    // Recupero delle informazioni sul file inviato
    $nome_file_temporaneo = $_FILES["file_inviato"]["tmp_name"];
    $nome_file_vero = $_FILES["file_inviato"]["name"];
    $tipo_file = $_FILES["file_inviato"]["type"];
    
    // Leggo il contenuto del file
    $dati_file = base64_encode(file_get_contents($nome_file_temporaneo));
    
    // Preparo il contenuto del file per la query sql
    $dati_file = addslashes($dati_file);
    
    // Query per inserire il file nel DB
    $query = "INSERT INTO calciatori.relazioni SET
                  Nome = '$nome_file_vero', 
                  Tipo = '$tipo_file', 
                  Anagrafica_id = '$tipo_file', 
                  Dati = '$dati_file'"; 
    
    mysql_query($query)
    or die("Query non valida: " . mysql_error());
    
    // Messaggio di successo
    echo "Memorizzazione del file $nome_file_vero nel database eseguita correttamente!";
    Per il recupero invece:
    codice:
    /* Connessione e selezione del database */
    $db = new MysqlClass();
    $db->connetti();
    
    if($_GET['id'] == "")
        header("Location: view.php");
    
    // Query per recuperare il file
    $query = "SELECT * FROM calciatori.relazioni WHERE id_relazione  = ". $_GET['id'];
    
    $risultato = mysql_query($query)
    or die("
    Query non valida: " . mysql_error());
    $tmp = mysql_fetch_array($risultato);
    echo "Tipo --> " .$tmp['Tipo'];
    //exit;
    
    // Invio l'intestazione contenente il tipo MIME del file
    header("Content-Type: " .$tmp["Tipo"]);
    header("Content-Disposition: attachment; Filename=" .$tmp["Nome"]);
    
    // Invio il contenuto del file
    echo base64_decode($tmp["Dati"]);  
    $db->disconnetti();
    Ciao
    Danilo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non leggo il post perché mi è bastato il titolo.

    NON caricare i file direttamente nel db, carica i file in una cartella e nel db mettici solo il nome del file caricato, poi quando ti serve prendi il nome e lo scarichi dalla cartella.
    Caricare dei file in una tabella del db è una pessima idea, la tabella arriverà velocissimamente a dimensioni immani rallentando tutto il sistema.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    6
    Ok, grazie del suggerimento.
    Ciao
    Danilo

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.