Codice PHP:
function estensione($nome){
$trova_punto = explode(".", $nome);
$estensione = $trova_punto[count($trova_punto) - 1];
$estensione = strtolower($estensione);
if (isset($trova_punto[1]) == FALSE){
return "Nessuna estensione";
}
return $estensione;
}
$directory = 'articoli/'; // directory dove va uplodato il file
$n=$_POST['n'];//numero di foto uploadate
$art_id=$_POST['art_id']; //id dell'articolo relativo alle foto uploadate
for ($i=1;$i<=$n;$i++)
{
error_reporting (E_ALL);//serve?
// verifica l'esistenza del file
if (isset($_FILES["$i"]))
{
$file_temporaneo= $_FILES["$i"]['tmp_name'];
// Ottengo le informazioni sull'immagine originale
list($width, $height, $type, $attr) = getimagesize($file_temporaneo);
$image2=getimagesize($file_temporaneo);
if ($width>500)
{
// Creo la versione ridimensionata dell'immagine
$himage=(500*$height)/$width;
$thumb = imagecreatetruecolor(500, $himage);
$source = imagecreatefromjpeg($file_temporaneo);
imagecopyresized($thumb, $source, 0, 0, 0, 0, 500, $himage, $width, $height);
$file_temporaneo=$thumb;
// Salvo l'immagine ridimensionata
}
$nome_file = $_FILES["$i"]['name'];
$estensione_file=estensione($nome_file);// trova l'estensione del file
$nome=$directory.$art_id."_".$i.".".$estensione_file;// assegna un nome univooco al file
echo "$file_temporaneo - $nome
";//esegue l'upload e controlla che vada a buon fine
if (imagejpeg($file_temporaneo, $nome, 75))
echo "L'immagine è stata caricata.
";
else
echo "Si è verificato un errore durante l'upload";
imagedestroy($file_temporaneo);
}
else
echo "immagine non trovata";
}
con questo codice faccio upload di una o più immagini jpg, rinominandole tutte id-articolo_numero-foto.jpg, e, ne caso avessero una larghezza superiore a 500, setto la larghezza a 500 mantendendo la proporzione (per essere pignoli ci manca il controllo, e quindi l'inversione delle variabili, nel caso fosse un'immagine verticale).
vi metto anche la pagina di invio:
Codice PHP:
<form method=post action=upload.php enctype=multipart/form-data>
Inserire le immagini
";
for ($i=1;$i<=$riga["foto"];$i++)
{
echo "$i) <input type=file name=$i>";
if ($i==1) echo "<font class=text2>questa immagine sarà sia quella dell'anteprima sia la prima visualizzata nell'articolo</font>";
echo "
";
}
echo"<input type=hidden name=art_id value=".$riga["id"].">
<input type=hidden name=n value=".$riga["foto"].">
<input type=submit value=upload>";
fino a qualche giorno fa (non avevo ancora inserito imagedestroy, e infatti inserendo due immagini grandi dava errore) funzionava tutto perfettamente. poi sono andato a fare una nuova prova, e ecco il risultato:
Warning: imagejpeg(): supplied argument is not a valid Image resource in /web/htdocs/www.navecorsara.it/home/ms/upload.php on line 54
Si è verificato un errore durante l'upload
Warning: imagedestroy(): supplied argument is not a valid Image resource in /web/htdocs/www.navecorsara.it/home/ms/upload.php on line 61
che cosa c'è che non va in Image? Ho provato a fare anche un debug con echo, stampando le varibili volta volta, ma tutto va bene
Grazie a tutti