Newsgroup: it.comp.www.php
Titolo: Script o Classe per upload immagine

Salve predisporre un'area del ns sito per consentire agli utenti di
suggerire un'immagine con un breve commento, che dopo moderazione puo'
essere pubblicata.
L'immagine dovrebbe essere soggetta a certi vincoli (solo jpg  e di una
certa grandezza) e cio' dovrebbe essere controllato  prima che l'utente
possa fare l'upload
C'e' gia' qualcosa in giro che voi sappiate che mi aiuti a fare questo ?
(qualche classa che faccia qualcosa di simile o altro )
Grazie
Michele

 l'utente possa fare l'upload
PHP e' lato server.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.


Un po' di codice :
<?php
$my_max_file_size  = "102400"; # massima dimensione dell'immagine in bytes
$allowed_types = array("image/pjpeg", "image/gif", "image/png"); //formati
consentiti jpg, gif, png
$lang[formato]="Formato del file non consentito (solo .gif, .jpg, .png)";
$lang[dim]="Dimensione massima consentita 100 Kb";
$lang[sent]="File inviato con successo";
$lang[problem]="Problemi nel caricare il file";
$lang[indietro]="Torna indietro";
if(!$upload_img)
 {
 $num_file=5; // il numero di immagini che puoi caricare contemporaneamente
 echo"<p align=\"center\"><br><b>Per caricare un'immagine utilizza il modulo
sottostante</b></p>";
 echo"<FORM ENCTYPE=\"multipart/form-data\"
ACTION=\"$PHP_SELF?action=upload\" METHOD=\"POST\" id=testo><p
align=center>";
 for($i=0; $i<$num_file; $i++)
  {
  echo"<INPUT NAME=\"userfile[" . $i . "]\" type=file id=testo
size=50><br>";
  }
 echo"<br><INPUT TYPE=\"submit\" name=\"upload_img\" VALUE=\"Carica
l'immagine\" id=testo>";
 echo"</FORM>";
 }
else
 {
 echo "<br>";
 $a=0;
 for($i=0; $i<count($userfile); $i++)
  {
  if($userfile[$i]!="")
   {
   $a++;
   if (!in_array($userfile_type[$i], $allowed_types))
    {
    echo "&nbsp; $lang[formato]: $userfile_name[$i]<br>";
    }
    else if($userfile_size[$i]>$my_max_file_size)
    {
    echo "&nbsp; $lang[dim]: $userfile_name[$i] <i>(" .
number_format($userfile_size[$i]/1024, 1, ",","") . " kb)</i><br>";
    }
    else
    {
    if (is_uploaded_file($userfile[$i]))
     {
     $img_upload_dir=$DOCUMENT_ROOT."/images/"; //la directory dove vengono
caricate le immagini
     if(file_exists($img_upload_dir.$userfile_name[$i]))
      {
      echo "&nbsp; Il file: '$userfile_name[$i]' non è stato caricato perchè
è già presente. Per caricare un file con lo stesso nome di uno già esistente
devi prima eliminare il file esistente<br>";
      }
     else
      {
      copy($userfile[$i], $logo_upload_dir.$userfile_name[$i]) or die("Si è
verificato un errore, immagine non caricata");
      echo "&nbsp; $lang[sent]: '$userfile_name[$i]'.<br>";
      }
     }
     else
     {
     echo "&nbsp; $lang[problem]: '$userfile_name[$i]'.<br>";
     }
    }
   }
  }
 if($a==0)
  {
  echo "<p align=center>Nessun file caricato</p>";
  }
 echo "<p align=center><a href=\"javascript:history.go(-1)\">Torna
indietro</a></p>";
 }
?>
La directory su cui caricare i files deve avere impostati i permessi a 0766
o 0777
Comunque inserendo un firm per caricare files, ti esponi sempre a eventuali
problemi sulla sicurezza.
Francesco Duca
http://www.goldenweb.it