Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di jack11
    Registrato dal
    Jan 2011
    Messaggi
    44

    [VB.NET] scaricare file da internet

    Salve, avrei bisogno di scaricare un file da internet perché con clickonce l'installazione è sommaria e non riesco a includere tutti i file.
    Vi scrivo un po' del codice che sono riuscito a mettere insieme.


    codice:
    Public Class controllore
    Public WithEvents TCP As New System.Net.WebClient
     Private Sub controllore_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     TCP.DownloadFileAsync(New Uri("http://www.com.altervista.org/accesso.wav"), ("C:\ProgramData\"))
    END SUB
    E poi ho creato un'altra classe dove volevo volevo mostrare la percentuale, i bytes scaricati e quelli ancora da scaricare

    codice:
    Private Sub PrgChngd(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles TCP.DownloadProgressChanged
     Label2.Text = e.ProgressPercentage() 
    Label3.Text = e.BytesReceived() 
    Label5.Text = e.TotalBytesToReceive() 
    End Sub
    Solo che all'avvio, non so se il file parte in download e tanto meno riesco a vedere la percentuale e le informazioni riguardanti il download.
    Credo che l'errore sia perché non richiamo la classe PrgChngd nella form_load.
    Se intuisco giusto, come posso fare?
    Grazie mille per la solita cortesia che riservate.

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Non credo che sia quello l'errore: la seconda routine è un gestore di evento quindi viene richiamata automaticamente al verificarsi di quell'evento. Prova invece a fare così:

    codice:
    Private Sub PrgChngd(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles TCP.DownloadProgressChanged
     Label2.Text = e.ProgressPercentage() 
     Label3.Text = e.BytesReceived() 
     Label5.Text = e.TotalBytesToReceive()
     Me.Refresh() 'o Me.Invalidate() 
    End Sub
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    Utente di HTML.it L'avatar di jack11
    Registrato dal
    Jan 2011
    Messaggi
    44
    Nulla, tutto fermo.

  4. #4
    Prova con questa:
    codice:
    Dim str As Stream = Nothing
            Dim fstr As FileStream = Nothing
    Dim DownloadedBytes  as integer        
    Try
                Dim wr As HttpWebRequest = CType(WebRequest.Create(Indirizzo), HttpWebRequest)
                Dim ws As HttpWebResponse = CType(wr.GetResponse(), HttpWebResponse)
                str = ws.GetResponseStream()
                Dim inBuf(4096) As Byte
                Dim bytesToRead As Integer = CInt(inBuf.Length)
                Dim bytesRead As Integer = 0
    
                fstr = New FileStream(PercorsoSalvataggio, FileMode.OpenOrCreate, FileAccess.Write)
    
                While bytesToRead > 0
                    Dim n As Integer = str.Read(inBuf, bytesRead, bytesToRead)
                    If n = 0 Then
                        Exit While
                    Else
                        fstr.Write(inBuf, 0, n)
                    End If
     DownloadedBytes += n
                End While
    
     Catch ex As Exception
                DownloadFile = ""
                MessageBox.Show("Errore", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Finally
                If str IsNot Nothing Then str.Close()
                If fstr IsNot Nothing Then fstr.Close()
            End Try
    Nel ciclo While gli metti:
    codice:
     If ((DownloadedBytes / 4096) / FileLenght) * 100 <= 100 Then
                            PB.Value = CInt(((DownloadedBytes / 4096) / FileLenght) * 100)
                        Else
                            PB.Value = PB.Maximum
                        End If
    Recuperi la dimensione del file dall'Header del HttpWebResponse oppure da ws.ContentLenght
    Fammi sapere.

  5. #5
    Utente di HTML.it L'avatar di jack11
    Registrato dal
    Jan 2011
    Messaggi
    44
    Intanto grazie mille per l'aiuto.
    Mi da soltanto un errore:

    downloadfile=""

    non dichiarato.

  6. #6
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ecco, fatta n'altra figura di m****.
    Alla prossima.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.