Hallo,
da öfters im Internet und Netzwerkprogrammierungs Unterforum nach verschiedenen FTP-Codes gefragt wird habe ich mich entschlossen mal ein Tuturial zuschreiben.
1. Datei downloaden:
Es gibt 2 verschiedene arten eine Datei zudownloaden: die "normale" Art und die Asyncrone Art wobei ich die Asyncrone art bevorzuge. Bei der normalen Art Reagiert das Programm nicht mehr wenn man den download nicht mit einem Backgroundworker ausführt bei der Asyncronen art jedoch schon.
Der Code zum "normalem" Download ist dieser:
|
Visual Basic Quellcode
|
1
2
3
|
Dim web as New Net.Webclient
web.Credentials = New Net.NetworkCredential ("Benutzername","Passwort")
web.DownloadFile ("Link zur Datei","Speicherort(mit datei endung!)")
|
Der Code zum ansyncronen downloaden ist dieser:
Global Deklarieren:
|
Visual Basic Quellcode
|
1
|
Dim WithEvents web as New Net.Webclient
|
Eigentlicher Code:
|
Visual Basic Quellcode
|
1
2
|
web.Credentials = New Net.NetworkCredentials ("Benutzername","Passwort")
web.DownloadFileAsync (New Uri ("Link zur datei"),"speicherort mit datei endung")
|
Kein großer unterschied beim befehl, wobei man aber beim asyncronen download die Fertigstellung des downloads mit einem Code "auslesen" muss im gegensatz zu dem "normalem" Download bei dem man den Code der nach dem download ausgeführt werden soll einfach hinter den Befehl des downloads schreibt.
Der Code zum "auslesen" des Zeitpunkts wann der Downloadfertig ist, ist dieser:
|
Visual Basic Quellcode
|
1
2
3
4
5
|
Private Sub web_DownloadFileCompleted(Byval sender as Object, ByVal e As System.Net.DownloadFileCompletedEventArgs) Handles web.DownloadFileCompleted
'Hier der Code der ausgeführt werden soll wenn der Download fertig ist
End Sub
|
_________________________________________________________________________________________________________
2. Datei Upload:
Der Code zum Uploaden einer Datei sieht fast genauso aus wie der zum downloaden. Auch hier gibt es eine normale und asyncrone art. Der code zum normalem uloaden ist dieser:
|
Visual Basic Quellcode
|
1
2
3
|
Dim web as New Net.Webclient
web.Credentials = New Net.NetworkCredential ("Benutzername","Passwort")
web.UploadFile ("Zielverzeichnis auf Server","Speicherort(mit datei endung!)")
|
Der Code zum asyncronen upload ist dieser:
Global Deklarieren:
|
Visual Basic Quellcode
|
1
|
Dim web as New Net.Webclient
|
Eigentlicher Code:
|
Visual Basic Quellcode
|
1
2
|
web.Credentials = New Net.NetworkCredential ("Benutzername","Passwort")
web.UploadFileAsync (New Uri ("Speicherort auf dem server"),"Aktuelles Verzeichnis auf dem PC")
|
Auch hier muss man den abschluss des Uploads abfangen. Dieser Code ist der gleiche wie beim download nur statt download upload:
|
Visual Basic Quellcode
|
1
2
3
4
5
|
Private Sub web_UploadFileCompleted(Byval sender as Object, ByVal e As System.Net.UploadFileCompletedEventArgs) Handles web.UploadFileCompleted
'Hier der Code der ausgeführt werden soll wenn der Upload fertig ist
End Sub
|
_________________________________________________________________________________________________________
3. String downloaden (.txt datei auslesen):
Es gibt auch eine einfache methode um einen Text zudownloaden ohne das man die komplette datei erst auf seinem PC braucht. Davon gibt es wieder die beiden möglichkeiten.
normal:
|
Visual Basic Quellcode
|
1
2
3
|
Dim web as New Net.Webclient
web.Credentials = New Net.NetworkCredential ("Benutzername","Passwort")
web.DownloadString ("Link zur datei")
|
async:
Global Deklarieren:
|
Visual Basic Quellcode
|
1
|
Dim web as new Net.Webclient
|
Eigentlicher Code:
|
Visual Basic Quellcode
|
1
2
|
web.Credentials = New Net.NetworkCredential ("Benutzername","Passwort")
web.DownloadStringasync ("Link zur datei")
|
Auch bei dieser async-methode muss man das Fertigstellen des Downloads abfangen:
|
Visual Basic Quellcode
|
1
2
3
4
5
|
Private Sub web_DownloadStringCompleted(Byval sender as Object, ByVal e As System.Net.DownloadStringCompletedEventArgs) Handles web.DownloadStringCompleted
'Hier der Code der ausgeführt werden soll wenn der Upload fertig ist
End Sub
|
_________________________________________________________________________________________________________
4. Ordner auf FTP-Server auslesen:
Um einen Ordner auszulesen kann man HttpWebReaquest benutzen. Hierbei gibt es zum glück nur eine mölichkeit
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("Link zum FTP-Ordner")
request.Method = Net.WebRequestMethods.Ftp.ListDirectory
request.Credentials = New Net.NetworkCredential("Benutzername", "Passwort")
Dim response As Net.FtpWebResponse = request.GetResponse()
ListBox1.Items.Clear()
Using myReader As New IO.StreamReader(response.GetResponseStream())
Do While myReader.EndOfStream = False
ListBox1.Items.Add(myReader.ReadLine())
Loop
End Using
|
Dieser Code stammt von
www.vcware.de
_________________________________________________________________________________________________________
5. Datei umbenennen:
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
9
|
Dim Request As Net.FtpWebRequest = Net.WebRequest.Create("Link zur datei")
Dim Response As Net.FtpWebResponse
Request.Credentials = New Net.NetworkCredential("Benutzername", "Passwort")
Request.Method = Net.WebRequestMethods.Ftp.Rename
Request.Timeout = (60000)
Request.RenameTo = "Neuer name mit dateiendung"
Response = Request.GetResponse()
Response.Close()
|
_________________________________________________________________________________________________________
6. Dateilöschen:
Natürlich kann man auch eine datei auf dem server löschen. Das funktioniert auch wieder über Request. Der Code ist dieser:
|
Visual Basic Quellcode
|
1
2
3
4
5
6
7
8
|
Try
Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("Link zur datei")
request.Method = Net.WebRequestMethods.Ftp.DeleteFile
request.Credentials = New Net.NetworkCredential("Benutzername", "Passwort")
Dim response As Net.FtpWebResponse = request.GetResponse()
Catch ex As Exception
MsgBox(ex.Message)
End Try
|
Ich hoffe ich konnte euch ein bischen helfen
lg,
viperkill