24. VB.Net Program do pobierania plików z FTP i HTTP + solucja

Witam witam ! dziś spróbujemy ogarnąć budowę programu do pobierania plików z serwerów FTP oraz HTTP. Poniżej zamieszczam zakomentowany kod oraz link do solucji

Imports System.Net
Imports System.IO

Public Class Form1

    '**********************************************************************************************************
    '********************************************* HTTP ********************************************************
    '**********************************************************************************************************

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Dim filename As String
            Dim uri As Uri = New Uri(TextBox1.Text)
            'Zdefiniowanie klienta pobierania
            Dim WC As WebClient = New WebClient()
            'Przekazanie info o statusie pobrania do procedury DownloadProgressCallback
            AddHandler WC.DownloadProgressChanged, AddressOf DownloadProgressCallback
            'pobranie nazwy pliku
            filename = Path.GetFileName(uri.LocalPath)
            'ustawienie ścieżki zapisu na dysku
            Dim OutputFilePath1 As String = "C:\Users\Public\" & filename
            'Rozpoczęcie pobierania asynchronicznego z określonymi parametrami
            WC.DownloadFileAsync(uri, OutputFilePath1)
            'pętla
            Do
                Try
                    'wychodzimy z pętli w momencie gdy WebClient zakończy pobieranie
                    If WC.IsBusy = False Then Exit Do
                    Application.DoEvents()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            Loop
            'Zatrzymanie procesu asynchronicznego
            WC.CancelAsync()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        MessageBox.Show("Pobieranie zakończone")
    End Sub
    Private Sub DownloadProgressCallback(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
        pBar.Value = e.ProgressPercentage
        Label1.Text = e.ProgressPercentage & " %"
    End Sub





    '**********************************************************************************************************
    '********************************************* FTP ********************************************************
    '**********************************************************************************************************

    'Stworzenie prcedury wraz z jej argumentami
    Private Sub FTPDownloadFile(ByVal SciezkaDocelowa As String, ByVal ftpUri As String, ByVal Login As String, ByVal Haslo As String)
        'Określenie klienta pobierania
        Dim WC As New WebClient()
        ' Utworzenie ścieżki do pliku na serwerze
        Dim uri As Uri = New Uri(FTPServer.Text)

        ' Pobranie danych logowania (użytkownik, hasło) w przypadku nie wpisania niczego zalogujemy się anonimowo
        WC.Credentials = New NetworkCredential(Login, Haslo)

        'Pobranie wielkości pliku
        Dim bytes() As Byte = WC.DownloadData(ftpUri)
        Dim filename As String
        'Pobranie nazwy pliku
        filename = Path.GetFileName(uri.LocalPath)

        Try
            '  Stworzenie ścieżki zapisu pliku
            Dim DownloadStream As FileStream = IO.File.Create(SciezkaDocelowa & "/" & filename)
            '  Pobranie pliku
            DownloadStream.Write(bytes, 0, bytes.Length)
            '  Zamknięcie połączenia
            DownloadStream.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Exit Sub
        End Try
        MessageBox.Show("Pobieranie zakończone")
    End Sub
    'Pobranie ścieżki docelowej dla pliku
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim FilePath As String
        Dim result As DialogResult = FolderBrowserDialog1.ShowDialog()
        If result = DialogResult.OK Then
            FilePath = FolderBrowserDialog1.SelectedPath
        Else : Exit Sub
        End If
        SciezkaZapisu.Text = FilePath
    End Sub
    'Rozpoczęcie pobierania
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        FTPDownloadFile(SciezkaZapisu.Text, FTPServer.Text, FTPUsername.Text, FTPPassword.Text)
    End Sub
End Class
Przy okazji zobaczycie w jaki sposób można zadeklarować procedurę z 4 argumentami, robiliśmy to już kiedyś przy okazji pisania programu do logowania w funkcji, ale tu widać to lepiej.



Dodano 09.07.2016


3 komentarze:

  1. Dzięki, czekam na więcej tematów.
    Pozdrawiam andrew

    OdpowiedzUsuń
  2. Bardzo dobre, przejrzyste opracowanie. Szkoda, że nie ma chwilowo-mam nadzieję,że będą-dalszych zagadnień, a między innymi problemu odnawiania wykresów na PictureBox lub na formie, po użyciu Refresh lub innego, odpowiedniego rozkazu.
    Serdecznie pozdrawiam.

    OdpowiedzUsuń
  3. Świetny poradnik. Jak wszyscy, czekam na więcej :)

    Pozdrawiam

    OdpowiedzUsuń