Codice PHP:
<?php
function CreateThumb($filetype, $srcdir, $dstdir, $name, $tw, $tc)
{
// todo: consider refactoring
$src = "$srcdir/$name";
$dst = "$dstdir/$name";
switch ($filetype) {
case 'image/jpg':
case 'image/jpeg':
$srcImg = imagecreatefromjpeg($src);
break;
case 'image/png':
$srcImg = imagecreatefrompng($src);
break;
case 'image/gif':
$srcImg = imagecreatefromgif($src);
break;
}
$origWidth = imagesx($srcImg);
$origHeight = imagesy($srcImg);
$ratio = $origWidth / $tw;
$th = $origHeight / $ratio;
$thumbImg = imagecreatetruecolor($tw, $th);
imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $tw, $th, $origWidth, $origHeight);
switch ($filetype) {
case 'image/jpg':
case 'image/jpeg':
$res = imagejpeg($thumbImg, $dst, $tc);
break;
case 'image/png':
$res = imagepng($thumbImg, $dst);
break;
case 'image/gif':
$res = imagegif($thumbImg, $dst);
break;
}
return $res;
}
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;
}
// 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("Formato file non valido");
}
// 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("Impossibile caricare il file");
// 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: ".$_FILES['uploadfile']['size']."
";
echo "Tipo MIME file: ".$_FILES['uploadfile']['type'];
} else {
// controllo il tipo di errore
if ($_FILES['uploadfile']['error'] == 2) {
// errore, file troppo grande (> 1MB)
die("Errore, file troppo grande: il massimo consentito è 1MB");
} else {
// errore generico
die("Errore generico");
}
}
$srcdir = "file_caricati";
$dstdir = "miniature";
$name = filtranome($_FILES['uploadfile']['name'],$filetype);
// dimensioni della miniatura da creare
$tw = 400; // larghezza
// livello di compressione della miniatura
$tc = 90;
$res = CreateThumb($filetype, $srcdir, $dstdir, $name, $tw, $tc);
if (!$res) die("Impossibile salvare la miniatura");
?>