Codice PHP:
function filtranome($name, $filetype)
{
// todo: consider refactoring
$extension = explode('/', $filetype);
// qui filtri con varie funzioni
$nuovonome = $name;
$nuovonome = str_replace(array(' ', '.',','), '_', $nuovonome); // elimino alcuni caratteri
$nuovonome = strtolower($nuovonome); // tutto in minuscolo
$nuovonome = time() . '_' . $nuovonome . '.' . 'jpeg';
return $nuovonome;
}
function filtro($name, $filetype)
{
// todo: consider refactoring
$extension = explode('/', $filetype);
// qui filtri con varie funzioni
$nuovonome = $name;
$nuovonome = str_replace(array(' ', '.',','), '_', $nuovonome); // elimino alcuni caratteri
$nuovonome = strtolower($nuovonome); // tutto in minuscolo
$nuovonome = time() . '_' . $nuovonome . '.' . $extension[1];
return $nuovonome;
}
// controllo che non ci siano stati errori nell'upload (codice = 0)
if ($_FILES['uploadfile']['error'] == 0) {
$acceptedTypes = array('image/jpeg','image/png','image/gif','image/jpg','image/bmp','image/png');
// upload ok
// controllo formato
$filetype = $_FILES['uploadfile']['type'];
if (!in_array($filetype, $acceptedTypes)) {
die("[b]Formato file non valido[/b]");
}
// copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale
copy($_FILES['uploadfile']['tmp_name'], "file_caricati/" . filtranome($_FILES['uploadfile']['name'], $filetype)) or die("[b]Impossibile caricare il file. Riprovare.[/b]");
copy($_FILES['uploadfile']['tmp_name'], "immagini/" . filtro($_FILES['uploadfile']['name'], $filetype)) or die("[b]Impossibile caricare il file. Riprovare.[/b]");
// upload terminato, stampo alcune info sul file
echo "
[b]Upload terminato con successo[/b]
Le Informazioni riguardanti il File che hai appena caricato sono:
";
echo "Nome file originale: ".$_FILES['uploadfile']['name']."
";
echo "Nome file caricato: ".filtranome($_FILES['uploadfile']['name'], $filetype)."
";
echo "Dimensione file: ".round($_FILES['uploadfile']['size']/1024,2) ." Kb
";
echo "Tipo MIME file: ".$_FILES['uploadfile']['type'];
Come potete vedere nel codice sopra, ho dovuto creare due funzioni:
- una che mi salvi in "file_caricati" con il formato ".jpeg".
- una che mi salvi in "immagini" con il formato originale.
Come potrei evitare di tenere obbligatoriamente queste due funzioni, cioè c'è un modo per avere gli stessi risultati (elencati nei due punti sopra), ma senza creare per forza due funzioni, non ne potrei creare una?