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 ClassPrzy 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
Dzięki, czekam na więcej tematów.
OdpowiedzUsuńPozdrawiam andrew
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.
OdpowiedzUsuńSerdecznie pozdrawiam.
Świetny poradnik. Jak wszyscy, czekam na więcej :)
OdpowiedzUsuńPozdrawiam