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();