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
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