Du bist nicht angemeldet.

[VB 2008] FTP-Tutorial

viperkill

Registrierter Benutzer

  • »viperkill« ist männlich
  • »viperkill« ist der Autor dieses Themas

Beiträge: 371

Dabei seit: 10. August 2009

Wohnort: Papierkorb

Hilfreich-Bewertungen: 9

  • Private Nachricht senden

1

Freitag, 27. November 2009, 14:54

FTP-Tutorial

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


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

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »viperkill« (12. April 2011, 09:33)


Es haben bereits 3 registrierte Benutzer diesen Beitrag als hilfreich eingestuft.

Benutzer, die diesen Beitrag hilfreich fanden:

Londi, wejherowo112, BFDeluxe

user44

Registrierter Benutzer

  • »user44« ist männlich

Beiträge: 126

Dabei seit: 22. Dezember 2009

Wohnort: Bayern

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

2

Dienstag, 22. Dezember 2009, 16:38

Wo werden die gedownloadeten Files gespeichert?
Jedes Programm enthält mindestens einen Fehler!
Wenn man versucht diesen Fehler zu beheben,
baut man mindestens 2 neue ein!

viperkill

Registrierter Benutzer

  • »viperkill« ist männlich
  • »viperkill« ist der Autor dieses Themas

Beiträge: 371

Dabei seit: 10. August 2009

Wohnort: Papierkorb

Hilfreich-Bewertungen: 9

  • Private Nachricht senden

3

Dienstag, 22. Dezember 2009, 17:13

Zitat

web.Credentials = New Net.NetworkCredentials ("Benutzername","Passwort")
web.DownloadFileAsync (New Uri ("Link zur datei"),"speicherort mit datei endung")



Da wo "speicherort mit dateiendung" steht, kannst du einen beliebigen Pfad angeben wie z.b. "C:\Users\Test\Desktop\Besispiel.jpg"
Aber denke immer daran, du musst den speicherort mit dem dateityp angeben wie z.b. *.txt oder *.jpg



Grüße,

viperkill

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »viperkill« (22. Dezember 2009, 18:43)


vbdetlevvb

Registrierter Benutzer

  • »vbdetlevvb« ist männlich

Beiträge: 1

Dabei seit: 2. Januar 2010

Wohnort: nürnberg

  • Private Nachricht senden

4

Samstag, 2. Januar 2010, 20:43

Problem bei Upload

Hi viperkill
Ich habe jetzt noch ein Problem beim Upload ich habe deinen Code eingefügt die Nutzerdaten eingefügt und wenn ich jetzt versuche eine Datei hochzuladen bekomme ich die Fehlermeldung:

WebException
Der angeforderte URI ist für diesen FTP-Befehl ungültig.

TiM_My

Registrierter Benutzer

  • »TiM_My« ist männlich

Beiträge: 114

Dabei seit: 7. November 2009

Wohnort: Dort

  • Private Nachricht senden

5

Donnerstag, 21. Januar 2010, 20:17

du hast wahrscheinlich bei der adresse statt:

Zitat

ftp://deineadresse.de/file.exe

Zitat

verwendet.^^ das erste ist richtig ;)
lg
Kicke hier um herauszufinden, ob du ein Idiot bist.

Lapdogs

Registrierter Benutzer

  • »Lapdogs« ist männlich
  • »Lapdogs« wurde gesperrt

Beiträge: 129

Dabei seit: 11. Oktober 2009

Wohnort: Rosenheim

Frühere Benutzernamen: ClipKing

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

6

Freitag, 5. Februar 2010, 17:43

Was meinst du bei "Upload" mit Speicherort? Die Datei, die uploaden werden soll? Und warum trägt man den UserNamen ein, abe rnicht di Adresse des Servers?
Du weißt nicht was das soll, deshalb quatschst du mich hier voll :evil:

Cross

Designer / Html / Css / JavaScript

Beiträge: 283

Hilfreich-Bewertungen: 15

  • Private Nachricht senden

7

Montag, 21. Juni 2010, 10:47

Wo muss man den SFTP server angeben?

Icebear19691

Registrierter Benutzer

  • »Icebear19691« ist männlich

Beiträge: 17

Dabei seit: 10. August 2010

Wohnort: Aachen

  • Private Nachricht senden

8

Freitag, 13. August 2010, 20:10

@ viperkill

das Script is super, aber wie bekomm ich die Upload - Statusmeldung weg ! ( Unterdrückt ) ???

Ötzi

Registrierter Benutzer

Beiträge: 5

Dabei seit: 20. Februar 2010

  • Private Nachricht senden

9

Donnerstag, 26. August 2010, 21:46

Hallo Leute
ich habe diese privat sub:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
Visual Basic Quellcode


	

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


aus dem Tut eingefügt un bei mir kommt dann die fehlermeldung:
Fehler 1 Der Typ "System.Net.DownloadFileCompletedEventArgs" ist nicht definiert. C:\Users\Ötzi\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 34 78 WindowsApplication1
Fehler 2 Die Private Sub web_DownloadFileCompleted(sender As Object, e As <nicht erkannter Typ>)-Methode kann das Public Event DownloadFileCompleted(sender As Object, e As System.ComponentModel.AsyncCompletedEventArgs)-Ereignis nicht behandeln, da die Signaturen inkompatibel sind. C:\Users\Ötzi\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 34 133 WindowsApplication1

was mach eich falsch?
hier mein ganzer code


Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Public Class Form1
    Dim WithEvents web As New Net.WebClient
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("adresse")
        request.Method = Net.WebRequestMethods.Ftp.ListDirectory
        request.Credentials = New Net.NetworkCredential("user", "passwort")
        Dim response As Net.FtpWebResponse = request.GetResponse()
        ListBox1.Items.Clear()
        Using myReader As New IO.StreamReader(response.GetResponseStream())

            Do While myReader.EndOfStream = False
                If My.Settings.State = False Then

                    ListBox1.Items.Add(myReader.ReadLine())
                    Dim web As New Net.WebClient
                    web.Credentials = New Net.NetworkCredential("user", "passwort")
                    web.DownloadFileAsync(New Uri("ftp://" & myReader.ReadLine), "e:" & myReader.ReadLine)
                    My.Settings.State = True
                End If

            Loop
        End Using




    End Sub




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


was muss ichmachen das es in den download complete event läuft?

gugi-zone.net

VB.NET & C# Programmierer

Beiträge: 1 506

Hilfreich-Bewertungen: 44

  • Private Nachricht senden

10

Donnerstag, 26. August 2010, 22:13

ich denke du musst statt

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

das schreiben:

Visual Basic Quellcode

1
2
3
4
5
Private Sub web_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.Net.DownloadDataCompletedEventArgs) Handles web.DownloadFileCompleted

        'Hier der Code der ausgeführt werden soll wenn der Download fertig ist

    End Sub

;)

Gruß, Gugi :thumbup:

henny

Ego Dominus est - Nobis Servi sunt ;)

  • »henny« ist männlich

Beiträge: 494

Dabei seit: 2. August 2009

Hilfreich-Bewertungen: 8

  • Private Nachricht senden

11

Samstag, 11. September 2010, 16:49

Hey, erstmal cooles Tut aber:
Gibt es eine Möglichkeit bei "Ordner auf FTP-Server auslesen" zu erkennen ob ein Ordner oder eine Datei der Listbox hinzugefügt wird?
(der Code listet auch die Dateien auf)
mfg henny

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

12

Samstag, 11. September 2010, 20:53

Ja die FTPLib bietet die Möglichkeit komplette Verzeichnisse auszulesen
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Deathmean

Registrierter Benutzer

  • »Deathmean« ist männlich

Beiträge: 273

Dabei seit: 6. August 2009

  • Private Nachricht senden

13

Montag, 7. Februar 2011, 12:24

Ist zwar schon ein bisschen älter aber ich habe da noch ein Problem:
Beim Upload kommt der Fehler: Der Remoteserver hat einen Fehler zurückgegeben: 227 Entering Passive Mode (87,106,247,223,4,237)

Beim Googeln kam raus, dass es daran liegt, das der Net.WebClient die passive mode benutzt.

Bei meinem Server geht aber nur aktiv. Also wie kann ich das Ganze mit der Aktiv mode machen?

Mein Code:

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
  Dim WithEvents web As New Net.WebClient
    Public Sub upload(ByVal name As String, ByVal passwort As String)

        web.Credentials = New Net.NetworkCredential(name, passwort)
        web.UploadFile("ftp://server/datei.xml", TextBox1.Text)
    End Sub

    Private Sub web_UploadFileCompleted(ByVal sender As Object, ByVal e As System.Net.UploadFileCompletedEventArgs) Handles Web.UploadFileCompleted
        MsgBox("Fertig")
    End Sub

Verwendete Tags

download, FTP, Tuturial, Upload

Social Bookmarks