File Download – Codice VB.NET
File Download: ovvero scaricare un file che si trova online, da un server al nostro pc o a quello dell’utente, tramite codice vbnet.
Introduzione
A volte abbiamo la necessità di scaricare un file che si trova su un server online: ad esempio estrazioni del superenalotto oppure dati metereologici etc. A volte ancora si ha bisogno di un file download per aggiornamenti al nostro software. A questo proposito, la funzione seguente ci potrà dare senz’altro una mano.
Public Function IngAC_FILE_DOWNLOAD(ByVal URL_File As String,
ByVal Percorso_File As String,
Modalita_Errore As Boolean) As Byte
Try
Dim Richiesta As Net.HttpWebRequest = Net.HttpWebRequest.Create(URL_File)
Dim Risposta As Net.HttpWebResponse = Richiesta.GetResponse()
Dim Reader As IO.Stream = Risposta.GetResponseStream()
Dim Writer As New IO.FileStream(Percorso_File, IO.FileMode.Create)
Dim Buffer(8192) As Byte
Dim BytesRead As Long
BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
Do While BytesRead > 0
Application.DoEvents()
Writer.Write(Buffer, 0, BytesRead)
BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
Loop
Reader.Close()
Writer.Close()
Risposta = Nothing
Richiesta = Nothing
Catch ex As Exception
If Modalita_Errore Then MsgBox("Errore :" & ex.Message)
Return 1
End Try
Return 0
End Function
Come funziona “File Download”
La funzione IngAC_FILE_DOWNLOAD(ByVal URL_File As String, ByVal Percorso_File As String, Modalita_Errore As Boolean) As Byte crea una richiesta http per l’indirizzo URL_File, a questo punto invia la Richiesta a ottiene la Risposta e uno stream di rete dal quale si potrà leggere il file richiesto.
Si procede col creare un nuovo file in locale (Percorso_File) e il buffer di byte (8129 sembra andare bene, ma può essere ulteriormente aumentato) che contiene i blocchi letti dallo stream. La lettura a blocchi è più conveniente che trasferire in massa tutto il contenuto, poiché altrimenti si dovrebbe usare un buffer di almeno le dimensioni del file.
La funzione Read restituisce come risultato il numero di byte effettivamente letti dallo stream. Il loop permette il download di tutto il file, e la successiva scrittura; il tutto dentro un try-catch-end try al fine di prevenire errori, che eventualmente saranno mostrati da un msgbox se modalita_errore è settata su true. La funzione restituisce zero se il tutto ha esito positivo; restituisce “uno” nel caso di errore.
Nota: ricordarsi di Imports System.IO in testa al listato, per poter usare la funzione IngAC_FILE_DOWNLOAD().
Link utili:
- MSDN -> Classe HttpWebRequest
- MSDN -> Metodo Stream.Read
- MSDN -> Metodo FileStream.Write
- Visual Studio Microsoft
- Download Gratuiti per lo Sviluppo Software Microsoft