Il seguente script si occupa di inserire all'interno della tabella appena creata un file inviato dall'utente attraverso un form. Il principio di funzionamento è abbastanza semplice: la prima volta che viene eseguito lo script, viene chiamata la funzione mostra_form che si occupa di preparare il modulo per l'upload del file. All'invio del file si procede con il recupero del suo contenuto e con l'inserimento nel database.
Non ci soffermiamo sui dettagli della procedura di upload del file, che non rientra nello scopo di questo articolo. Si noti solamente come sia possibile ricavare dall'array $_FILES alcune informazioni sul file ricevuto, in particolare il suo tipo MIME. Si tratta di una stringa che lo stesso browser invia insieme al file e che ne specifica il tipo. A esempio per una immagine in formato GIF questa stringa sarà "image/gif". Per un elenco dei diversi tipi MIME è possibile consultare questa pagina.
<?php
// se è stato inviato il file...
if(isset($_POST['invia']))
{
// se ci sono stati problemi nell'upload del file
if(!isset($_FILES['file_inviato']) OR $_FILES['file_inviato']['error'] != UPLOAD_ERR_OK)
mostra_form("errore nell'invio del file. Riprova");
// connessione e selezione del database
mysql_connect('localhost', 'utente_db', 'password_db')
or die('Connessione non riuscita: ' . mysql_error());
if(!mysql_select_db('nome_database'))
die('Selezione database fallita!');
// recupero alcune 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 = file_get_contents($nome_file_temporaneo);
// preparo il contenuto del file per la query
$dati_file = addslashes($dati_file);
// query per inserire il file nel DB
$query = "INSERT INTO tabella_files SET
nome_file = '$nome_file_vero',
tipo_file = '$tipo_file',
dati_file = '$dati_file'";
mysql_query($query)
OR die('Query non valida: ' . mysql_error());
// mostro nuovamente il form ed un messaggio di successo
mostra_form("Memorizzazione del file <b>$nome_file_vero</b> nel database eseguita correttamente.");
}
else
{
mostra_form();
}
/**
* Mostra il form per l'upload del file
*
*/
function mostra_form($messaggio = '')
{
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Carica file nel database</title>
</head>
<p><?php echo $messaggio?> <br /> Seleziona un file da memorizzare nel database: <p></p>
<form name="form1" enctype="multipart/form-data" method="post" action="">
<p>
<input type="file" name="file_inviato">
<p></p>
<p>
<input type="submit" name="invia" value="Invia file">
<p></p>
</form>
<?php
exit();
}
?>
Questo script non necessita di molti commenti, già presenti all'interno del codice. Si noti come l'inserimento di un file in MySQL si effettua attraverso una comune query INSERT.