Corsi on-line

Gestire gli Upload mediante form

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevUn semplice guestbook con file di testo al posto del DB
  • NextCrare un sondaggio con CGI

Per creare un efficiente sistema di upload in CGI è sufficiente un form e qualche riga di codice, in questo articolo sfrutteremo le potenzialità del linguaggio Perl al fine di mettere a disposizione dell'utente un modulo con il quale inviare verso una cartella remota foto o immagini.

La prima cosa da fare è scrivere il codice necessario per presentare agli utilizzatori un form con cui effettuare il caricamento dei file:

<html> 
<head>
<title>Form mail in CGI</title>
</head> 
<body> 
<form action="http://www.sito.it/cgi-bin/img.cgi" 
method="post" enctype="multipart/form-data"> 
Esegui l'aupload dell'immagine che desideri inviarci:
<input type="file" name="immagine"> 
<input type="submit" name="submit" value="Invia"> 
</form> 
</body> 
</html>
Salviamo pure il codice appena proposto in un file '.html', che potremo chiamare come preferiamo, e passiamo al sorgente della nostra piccola applicazione creata con lo scopo di processare i dati inviati dall'utente tramite modulo:
#!/usr/bin/perl
use CGI;

$directory_img="/var/www/html/images";

$upload=newCGI;

$nome_file=$upload->param("immagine");
$nome_file=~s/.*[\/\\](.*)/$1/;
$upload_file=$upload->upload("immagine");

open UPLOADFILE,">$directory_img/$nome_file";
binmode UPLOADFILE;
while ( <$upload_file> )
{ 
  print UPLOADFILE; 
}
close UPLOADFILE;

print $upload->header();
print <<END_HTML;

<html>
<head>
<title>Immaginericevuta</title>
</head>
<body>
Eccol'immaginechecihaiinviao:<br/>
<imgsrc="/images/$nome_file"border="0">
</body>
</html>

END_HTML
Niente di particolarmente complesso! Innanzitutto abbiamo indicato il percorso di sistema che porta alla directory in cui dovrenno essere uploddati i file, nel nostro caso la cartella 'images' presente nel percorso '/var/ww/html'.

In secondo luogo abbiamo eseguto un controllo tramite espressioni regolari sul parametro di input, eliminando così tutti quegli elementi che non sono il semplice nome del file completo di estensione.

L'articolo continua dopo la pubblicità

Siamo poi passati alla fase di upload sfruttando il metodo UPLOADFILE, da notare come venga specificato al metodo il mode per la scrittura del file; la funzione binarimode ci serve infatti per evitare che il file sia scritto in modalità testo ed eventualmente corrotto in occasione di passaggi tra diversi file system.

Infine, viene stampato del semplice codice HTML per creare una pagina contenente l'output dell'immagine uploddata.

Da non dimenticare che se, come nel caso del nostro esempio, stiamo lavorando in ambienti Unix o Unixlike comeLinux, sarà opportuno settare i permessi di esecuzione sul file contenente lo script:

chmod a+rx img.cgi
Oppure
chmod 755 img.cgi

Partecipa alle pre-registrazioni dei domini .cloud

Non perdere l'opportunità di aggiudicarti prima degli altri uno dei nuovi domini .cloud! Prenota i migliori domini e proteggi il tuo nome!

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQL
    Corso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHP
    Corso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 39 €
Vedi anche...
Guide