asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 12581
ASPCode.it - Store

  > > Articoli

Upload di file con ASP.net

Data di pubblicazione: 13/12/2005        Voto della community: 4,33 (Votanti: 8)

Una delle operazioni più utilizzate e al contempo tediose da essere sviluppate in ambito Active Server Pages è sicuramente l'upload di file sul server. In classic ASP le soluzioni sono svariate: utilizzare componenti di terze parti, sviluppare un proprio oggetto da richiamare poi tramite lo script ASP o scrivere righe e righe di codice VBScript realizzando una classe che in puro ASP operi l'effettivo upload di un file caricato dal browser dell'utente.
Bene, con ASP.net questo lavoro diviene estremamente semplice. In questo articolo è presentato un esempio di script che esegue proprio l'operazione di caricamento di un file selezionato dal navigatore. Al termine dello script sono presenti due righe di codice aggiuntive che consentono di convertire l'array di byte caricato in una stringa (allo scopo per esempio di manipolare il contenuto del file di cui si è effettuato l'upload) e, eventualmente, di visualizzarne il contenuto sul browser.
Da notare che la definizione del tag <form> è differente da quella tipica (include l'attributo enctype="multipart/form-data") in quanto dobbiamo specificare che è destinata all'upload di file via web.

Il codice, ampiamente commentato, dovrebbe risultare di facile comprensione anche ai meno esperti.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>

<script runat="server">
void Page_Load(Object sender, EventArgs e){
  if( filMyFile.PostedFile != null )
  {
    // referenzia il file caricato
    HttpPostedFile myFile = filMyFile.PostedFile;
  
    // rileva dimensione del file
    int nFileLen = myFile.ContentLength;
    byte[] myData = new byte[nFileLen];
    
    // leggi il file dallo stream
    myFile.InputStream.Read(myData, 0, nFileLen);

    // rileva il nome del file e lo associa al path corrente dello script di upload
    string strPath = Server.MapPath(Path.GetFileName(myFile.FileName));

    // crea un nuovo file
    FileStream newFile = new FileStream(strPath, FileMode.Create);

    // scrivi il buffer di dati nel file
    newFile.Write(myData, 0, myData.Length);

    // chiude il file
    newFile.Close();

    // informa il client che il file è stato caricato correttamente
    this.lbResult.Text = "File caricato correttamente";

    // manipola il testo contenuto nel file...
    string buf = System.Text.Encoding.Default.GetString(myData);

    // decommentare la riga seguente se si desidera visualizzare il contenuto del file
    //Response.Write(buf);


  }
}
</script>

<html>
  <head>
    <title>Upload di file con ASP.net</title>
  </head>
<body>
  <form id="Form1" method="post" runat="server" enctype="multipart/form-data">
    Upload di file con ASP.net<br /><br />
    Seleziona il file dal tuo PC:
    <input id="filMyFile" type="file" runat="server" NAME="filMyFile" size="30" class="button">
    <br /><br />
    <asp:Button id="Button1" runat="server" Text="Importa »"></asp:Button>
    <br /><br />
    <asp:Label ID="lbResult" Runat="server"></asp:Label>
  </form>
</body>
</html>




Utenti connessi: 12581