Quando ripenso a quanto fosse necessario penare con il vecchio ASP 3.0 per effettuare l’upload di un file sul WebServer mi vengono i brividi.



Per fortuna Microsoft ha ascoltato le preghiere dei programmatori disperati e in ASP.NET ha inserito delle classi apposite per l’upload, rendendo il tutto semplice quasi quanto in PHP.



Per prima cosa, e’ necessario un FORM html, nel quale 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 chepoi verranno interpretati.



Abbiamo bisogno inoltre di un tag <INPUT> con proprieta’ file: creera’ il pulsante ‘Sfoglia’ sul nostro form, necessario all’apertura della finestra di ricerca file.


Il codice del form sara’ quindi il seguente:



<form id="Upload" enctype="multipart/form-data" method="post" runat="server">
<input type="file" runat="server" id="PostedFile">
<asp:Button Runat="server" ID="Send" Text="Invia" />
</form>



e questo il risultato:


 


 


Nel Code-Behind dovremo quindi associare del codice alla pressione del pulsante ‘Invia’:


 


private void Send_Click(object sender,  System.EventArgs e)
{



    HttpPostedFile file_sent=PostedFile.PostedFile;


    //Rilevazione delle dimensioni del file inviato
    int file_size=file_sent.ContentLength;


    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();
}