Upload di file sul server con ASP.net 2.0

di: Angelo Ranucci     18 Aprile 2006

C'è da dire che il metodo FileUpload1.SaveAs(filePath) non si preoccupa del fatto che esista o meno un file con lo stesso nome nello stesso percorso e, se ciò accadesse, lo sovrascriverebbe. Se vogliamo evitare questo, dobbiamo controllare che in quella posizione non esista già un file con lo stesso nome.

Lo possiamo fare utilizzando il metodo Exists della classe File appartenente al Namespace System.IO:

Sintassi di nel metodo "Exists"

File.Exists(filePath)

Nella nostra applicazione testiamo quindi anche questa condizione e, se è il caso, mandiamo un messaggio all'utente dicendo che il file non può essere caricato perché già presente sul server.

Un'altra cosa da controllare è la dimensione del file da caricare. Se questi è troppo grande, può creare problemi al server e sarebbe facilissimo per un hacker, mettere fuori uso il sito.

Quindi scriviamo ancora qualche riga di codice per testare anche questa condizione. Diciamo che se il file supera 1MB non può essere caricato.

Il codice completo del metodo ButtonInvio_Click è il seguente:

Listato 3. Codice per il bottone con il controllo sull'esistenza dei file

protected void ButtonInvio_Click(object sender, EventArgs e)
{
 // otteniamo il path della cartella principale dell'applicazione
 string filePath = Request.PhysicalApplicationPath;

  // aggiungiamo il nome della nostra cartella al path
  filePath += "FileCaricati/";

  // controlliamo se il controllo FileUpload1 contiene un file da caricare
  if (FileUpload1.HasFile)
  {
   // controllo la dimensione del file
   if (FileUpload1.PostedFile.ContentLength > 1000000)
    Response.Write("Il file non può essere caricato perché supera 1MB!");
   else
   {
    // aggiorniamo il path del file
    filePath += FileUpload1.FileName;

    if (System.IO.File.Exists(filePath))
     // il file è già sul server
     Response.Write("Il file non può essere caricato perché già presente sul server!");
    else
    {
     // salviamo il file nel percorso calcolato
     FileUpload1.SaveAs(filePath);

     // mandiamo un messaggio all'utente
     Response.Write("File caricato!");
    }
   }
  }
 else
 {
  Response.Write("Il file non è stato caricato!");
 }
}

Testiamo ora la nostra applicazione. Premiamo F5 e cerchiamo un file da caricare:

Figura 4. L'applicazione appena lanciata

L'applicazione appena lanciata

Premiamo quindi Invio:

Figura 5. Dopo aver caricato il file

Dopo aver caricato il file

Verifichiamo, ad esempio nel Solution Explorer, che il file è stato caricato:

Figura 6. Il file presente sul Solution Explorer

Il file presente sul Solution Explorer

Proviamo a caricare lo stesso file una seconda volta:

Figura 7. Esempio di errore per file già presente

Esempio di errore per file già presente

Proviamo a caricare un file molto grande:

Figura 8. Errore per le dimensioni eccessive

Errore per le dimensioni eccessive

Il sorgente dell'esempio sviluppato in questo articolo può essere scaricato da qui.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto