Buona domenica a tutti,
scrivo per chiedere un consiglio su come strutturare al meglio uno script per l'upload di file su server.
Ho realizzato un form che - oltre al file da caricare - richiede di inserire un titolo al file, che funge da commento allo stesso.
Lo script carica le informazioni relative al nome del file e al testo all'interno di un database MySQL mentre il file vero e proprio viene caricato all'interno di una cartella del server.
Avrei necessità ora che - visualizzando l'elenco dei file contenuti nella cartella - al posto del nome del file venisse visualizzato il titolo che gli è stato assegnato all'atto dell'upload.
Se ho caricato il file "Pippo.pdf" e gli ho assegnato il titolo "File di prova", vorrei che venisse visualizzato il titolo del file, cliccando sul quale si aprirà il file pdf.
Da quanto ho avuto modo di leggere in giro, la soluzione più sbrigativa dovrebbe consistere nel caricare anche il file su MySQL, però alcuni deprecano questo tipo di modalità.
Cosa mi consigliate di fare?
Posto per completezza di informazioni il codice scritto finora.
- FORM
Codice PHP:
<form enctype="multipart/form-data" action="add.php" method="POST">
Titolo: <input type="text" name="nome">
File da caricare: <input type="file" name="file">
<input type="submit" value="Carica il file">
</form>
- SCRIPT PER CARICARE LE INFORMAZIONI SU SERVER
Codice PHP:
<?php
//Imposto la cartella dove saranno salvati i file
$target = "./prova/";
$target = $target . basename( $_FILES['file']['name'] );
//Recupero tutte le informazioni dal Form
$nome=$_POST['nome'];
$file=($_FILES['file']['name']);
//Mi connetto al database
include ("dbconn.php");
//Scrivo le informazioni nel database
mysql_query("INSERT INTO `upload` VALUES ('$nome', '$file')");
//Carico il file nella cartella
if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) {
//Verifico che sia tutto ok
echo "Il file [b] ". basename( $_FILES['file']['name']). " [/b] è stato regolarmente caricato.";
}
else {
//Se ci sono problemi, lo dico
echo "C'è stato un problema nel caricamento del file."; }
?>
- VISUALIZZAZIONE DELLE INFORMAZIONI
Codice PHP:
<?php
//Definisco la cartella dove sono contenuti i file
$path = "prova";
//Mi connetto al database
include ("dbconn.php");
//Apro la cartella
$dir_handle = @opendir($path) or die("Impossibile aprire la cartella [b] $path [/b]");
echo "Elenco dei file contenuti nella cartella [b] $path [/b]
";
//Eseguo la query di estrazione dal Database
$query = "SELECT * FROM upload";
$risultato = mysql_query($query);
while ($file = readdir($dir_handle))
{
while ($dati = mysql_fetch_array($risultato))
{
chmod("$path", 0777);
$testo=$dati["titolo"];
echo "[url='$path/$file']$testo[/url]
";
}
}
//Chiudo la cartella
closedir($dir_handle);
?>
Come al solito, grazie per la disponibilità e ancora buona domenica a tutti!
Luca