Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Upload in VB.NET

Usare VB.NET per consentire all'utente l'uload di file sul server
Usare VB.NET per consentire all'utente l'uload di file sul server
Link copiato negli appunti

Nel corso di questo articolo, analizzeremo come si effettua uno script di upload tramite ASP.NET sfruttando come linguaggio di scripting VB. Prima di incominciare a descrivere la parte tecnica, volevo "sollevare" moralmente tutti quanti dicendo che con ASP.NET l'operazione di upload è molto più semplice e facile da realizzare rispetto l'asp 3.0. (Si osservi l'articolo scritto da Davide Vogliotti per maggiori informazioni). Il codice necessario è pronto all'uso per l'upload è il seguente:

<%@ page language="VB" %>
<script runat="Server">

Sub Page_Load(Sender as Object, e as EventArgs)
  
  dim strPercorsoFileUpload as string
  strPercorsoFileUpload = "c:cartellaUpload"
  
  dim miaCartella as string
  miaCartella = Dir(strPercorsoFileUpload , vbDirectory)

  if miaCartella=""
    MkDir(strPercorsoFileUpload)
  end if
End Sub

Sub caricaFile(Sender as Object, e as EventArgs)
  
  'Ricavo il nome del file con percorso
  dim strFile
  strFile = mioFile.PostedFile.FileName

  'Ricavo il nome del file SENZA percorso
  Dim strNomeFile as string
  strNomeFile = System.IO.Path.GetFileName(strFile)

  dim strPercorsoFileUpload as string
  strPercorsoFileUpload = "c:cartellaUpload"
  dim strMessaggioFinale as string

  'Effettuo UPLOAD con controllo errore
  Try
    mioFile.PostedFile.SaveAs( strPercorsoFileUpload & "" & strNomeFile)
    strMessaggioFinale = "Upload avvenuto correttamente."
    strMessaggioFinale = strMessaggioFinale & "Dati del file copiato:<br />"
    strMessaggioFinale = strMessaggioFinale & "Dimensione : " & mioFile.PostedFile.ContentLength & " bytes<br />"
    strMessaggioFinale = strMessaggioFinale & "Tipologia File : " & mioFile.PostedFile.ContentType & "<br />"
    strMessaggioFinale = strMessaggioFinale & "Percorso File : " & mioFile.PostedFile.FileName & "<br />"
    catch strEccezzione As Exception
    strMessaggioFinale = "Errore: UPLOAD FALLITO.<br />"
    strMessaggioFinale = strMessaggioFinale & strEccezzione.ToString
  End Try

  'Mostro esito upload a video
  lbEsito.text = strMessaggioFinale
End Sub
</script>

<html>
<head>
<title>Upload File in VB.NET</title>
</head>
<body>
 <form runat="server" id="frmUpload" method="post" EncType="multipart/form-data">
 <asp:Label id="Label1" runat="server" Text="File 1" />
 <br />
 <Input ID="mioFile" Type="File" RunAt="Server">
 <br />
 <asp:Button id="btUpload" text="Effettua Upload" OnClick="caricaFile" runat="server" />
 <br />
 <asp:label id="lbEsito" runat="Server" />
</form>
</body>
</html>

Ora per dobbiamo capire, per un corretto utilizzo futuro, il funzionamento che si "nasconde" al suo interno. Come prima operazione osserviamo il form che viene creato all'interno della parte html:

<form runat="server" id="frmUpload" method="post" EncType="multipart/form-data">
<asp:Label id="Label1" runat="server" Text="File 1" />
<br />
<Input ID="mioFile" Type="File" RunAt="Server">
<br />
<asp:Button id="btUpload" text="Effettua Upload" OnClick="caricaFile" runat="server" />
<br />
<asp:label id="lbEsito" runat="Server" />
</form>

Subito nel tag form, possiamo notare due elementi insoliti. Il primo EncType="multipart/form-data" serve per poter inviare effettivamente i dati una volta inviato il file, ed il secondo (tipico dei form scritti con tecnologia ASP.NET) runat="server" serve ad indicare la necessità di elaborare il form sul server prima di inviare al client la pagina richiesta. All'interno del form, è possibile trovare 2 label, un bottone ed un campo di tipo file. La prima label(Label1) contiene solo la scritta "file 1". La seconda, come vedremo in seguito, mostrerà il raggiungimento o il fallimento dell'upload. Una volta scelto il file su cui effettuare l'upload, è necessario effettuare un click sul pulsante. Una volta fattò ciò, il controllo dello script, viene rimandato al server. Ora vedremo cosa accade sul server...

Prima di tutto, anche se non viene effettuato l'upload ma solo aperta la pagina, viene creata (se e solo se è inesistente) la cartella che dovrà contenere i nostri file in seguito all'upload.

Sub Page_Load(Sender as Object, e as EventArgs)
  
  dim strPercorsoFileUpload as string
  strPercorsoFileUpload = "c:cartellaUpload"
  
  dim miaCartella as string
  miaCartella = Dir(strPercorsoFileUpload , vbDirectory)

  if miaCartella=""
    MkDir(strPercorsoFileUpload)
  end if
End Sub

Nella sub-routine appena proposta, tramite la funzione dir, si va a verificare la presenza della directory specificata nella variabile strPercorsoFileUpload. Se non vi è, viene creata. Ora, analizziamo la parte interessante dello script: L'upload vero e proprio.

Sub caricaFile(Sender as Object, e as EventArgs)
  
  ' Ricavo il nome del file con percorso
  dim strFile
  strFile = mioFile.PostedFile.FileName
  
  ' Ricavo il nome del file SENZA percorso
  Dim strNomeFile as string
  strNomeFile = System.IO.Path.GetFileName(strFile)
  dim strPercorsoFileUpload as string
  strPercorsoFileUpload = "c:cartellaUpload"
  dim strMessaggioFinale as string
  
  ' Effettuo UPLOAD con controllo errore
  Try
   mioFile.PostedFile.SaveAs( strPercorsoFileUpload & "" & strNomeFile)
   strMessaggioFinale = "Upload avvenuto correttamente."
   strMessaggioFinale = strMessaggioFinale & "Dati del file copiato:<br />"
   strMessaggioFinale = strMessaggioFinale & "Dimensione : " & mioFile.PostedFile.ContentLength & " bytes<br />"
   strMessaggioFinale = strMessaggioFinale & "Tipologia File : " & mioFile.PostedFile.ContentType & "<br />"
   strMessaggioFinale = strMessaggioFinale & "Percorso File : " & mioFile.PostedFile.FileName & "<br />"
  Catch strEccezzione As Exception
   strMessaggioFinale = "Errore: UPLOAD FALLITO.<br />"
   strMessaggioFinale = strMessaggioFinale & strEccezzione.ToString
  End Try
  
  ' Mostro esito upload a video
  lbEsito.text = strMessaggioFinale
End Sub

La breve sub-routine appena proposta è il cuore del nostro script di upload. Come prima operazione, si cerca di ricavare il percorso completo del file su cui effettuare l'upload e una volta ricavato si estrae il nome del file senza il relativo percorso. Ora, tramite una semplice riga di codice:

mioFile.PostedFile.SaveAs( strPercorsoFileUpload & "" & strNomeFile)

viene effettuato l'upload.

L'upload viene giustamente effettuato all'interno di un blocco try-catch-end per poter gestire un eventuale errore. Se l'operazione di upload è creata correttamente, il messaggio finale(contenuto nella variabile strMessaggioFinale) conterrà le seguenti informazione:

  • Notifica di upload correttamente eseguito.
  • Dimensione del file copiato
    strMessaggioFinale = strMessaggioFinale & "Dimensione : " & mioFile.PostedFile.ContentLength & " bytes<br />"
  • Tipologia del file copiato:
    strMessaggioFinale = strMessaggioFinale & "Tipologia File : " & mioFile.PostedFile.ContentType & "<br />"
  • Percorso del file copiato riferito al nostro disco rigido.
    strMessaggioFinale = strMessaggioFinale & "Percorso File : " & mioFile.PostedFile.FileName & "<br />"

In caso di errore, verrà mostrata una scritta di errore ed il relativo errore generatosi.

strMessaggioFinale = "Errore: UPLOAD FALLITO.<br />"
strMessaggioFinale = strMessaggioFinale & strEccezzione.ToString

Una volta preparata la stringa strMessaggioFinale, la si visualizza all'interno di una label presente nella parte html della pagina.

<asp:label id="lbEsito" runat="Server" />

Ti consigliamo anche