Home Page Home Page Tips & Tricks Come effettuare l'upload di un file con ASP.NET ?

Come effettuare l'upload di un file con ASP.NET ?


Upload di file via Web con ASP 3.0


Vi ricordate quanto ci voleva per effettuare un upload tramite ASP 3.0 ?
Che fatica...fra l'altro erano nati componenti appositi (COM) addirittura per permettere l'upload dei file su dei server Web. Tutto sommato poi alla fine una volta che si conosceva la procedura tutto era più facile.
La vita con .NET si è semplificata parecchio. Microsoft ha tenuto conto delle varie lamentele dei programmatori di tutto il mondo e all'interno del Framework ha creato delle classi apposta di supporto per agevolare l'upload. Vediamo qui di seguito quali sono e come funzionano.

Sezione di Codice HTML


Tanto per cominciare abbiamo bisogno di un Form HTML classico.

Cominciamo già a dire che dobbiamo modificare il tag <form> ed impostare un encoding che sarà multipart/form-data.
Questo encoding serve per specificare che durante il submit del form verranno spediti una sequenza di dati che chiaramente poi verranno interpretati (possono essere immagini, musica, video e così via).

Oltre a ciò il linguaggio HTML ci mette a disposizione il tag <input>. Questo tag ha diverse proprietà una delle quali è file. Inseriamo quindi questo tag nel nostro Form in questo modo:

Codice .NET n°1
&lt;form id="Up" enctype="multipart/form-data" method="post" runat="server"&gt;
&lt;input type="file" runat="server" id="PostedFile"&gt;
&lt;asp:Button Runat="server" ID="Send" Text="Invia" /&gt;
&lt;/form&gt;


Questo codice visualizzera una pagina con un textbox necessario per indicare il percorso del file e un pulsante "Sfoglia" o "Browse" per aprire la finestra di ricerca del file.
Inoltre c'è un pulsante "Invia" per il submit del Form.

Il risultato del codice HTML
Il risultato del codice HTML


Sezione di code-behind


La parte di code-behind non è così difficile anche se effettua vari passaggi ma ora la commentiamo in modo dettagliato.
Allora come prima cosa dovete fare un doppio click sul pulsante "Send" in modalità HTML in modo che venga creato l'evento OnClick del pulsante.
Il codice risultante sarà il seguente:

Codice .NET n°2
private void Send_Click(object sender, System.EventArgs e)
{

//Riferimento al file appena inviato
HttpPostedFile file_sent=PostedFile.PostedFile;

//Dimensione del file inviato
int file_size=file_sent.ContentLength;

//Vari controlli (dimensione maggiore di zero e diverso da null)
if (file_sent!=null)
{
if (file_size>0)
{
//Creazione di un buffer di byte
byte[] dati=new byte[file_size];

//Lettura dal file e riempimento del buffer
file_sent.InputStream.Read(dati, 0, file_size);

string filename = file_sent.FileName;

//Scrittura del File su disco
FileStream fs=new FileStream("C:\\" + Path.GetFileName(filename),FileMode.Create);
fs.Write(dati,0,file_size);
fs.Close();
}
}
}


In questo modo il vostro file viene uploadato sul Web Server. Inoltre potete arricchire l'esempio magari con una Label in cui indicate il successo o meno dell'operazione di Upload.
Potete combinare questo Tip anche con altri Tips come per esempio quello del Resize al volo (Thumbnail) delle immagini uploadate sul server per creare una galleria d'immagini, oppure con il Tip per inviare E-Mail tramite ASP.NET in modo da poter far scegliere all'utente degli eventuali allegati.
Questi Tips li trovate a fondo pagina nell'elenco "Tips Collegati".
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5