FTP List directory per Webclient

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von setherus.

    FTP List directory per Webclient

    Hallo,

    ich versuche auf einem FTP server zuzugreifen, da das directory auslesen, und bei allen gefundenen dateien zu schauen ob es ein gesuchtes format ist, und diese dann downzuloaden

    ich habe das per Webclient aus system.net soweit gelöst das ich eine verbindung aufbauen kannn, und der download funktioniert auch, aber ebent nur mit statischen werten, ich kenn leider nur die endungen der gesuchten dateien
    in dem codebespiel versuch ich es mit dem dir befehl...was einfach einen leeren string ergibt
    ich hab auch schon an die webclient.container.components gedacht hab aber damit keine lösung hinbekommen :(


    kann mir da vl jemand helfen???

    vielen dank im vorraus

    Quellcode

    1. Imports System.Net
    2. Public Class clsFTP
    3. Dim _Host As String
    4. Dim _User As String
    5. Dim _Passwort As String
    6. Dim defuri
    7. Dim contrue As Boolean
    8. Dim aus As String
    9. Dim myFTP As New WebClient
    10. Dim file
    11. Dim kind
    12. Dim successkind, count
    13. Dim expression
    14. Dim lookuppath
    15. Public Sub conn(ByVal sHost As String, ByVal sUser As String, ByVal sPasswort As String)
    16. _Host = sHost
    17. _User = sUser
    18. _Passwort = sPasswort
    19. myFTP.Credentials = New Net.NetworkCredential(_User, _Passwort)
    20. myFTP.BaseAddress = _Host
    21. defuri = New System.Uri(_Host)
    22. ' myFTP.Site = defuri
    23. contrue = myFTP.IsBusy
    24. End Sub
    25. Public Function getfile(ByVal search As String)
    26. Dim filename As String
    27. If Not search = "" Then
    28. filename = search
    29. contrue = myFTP.IsBusy
    30. 'Streamreader
    31. ' Dim stream_reader As New IO.StreamReader(myFTP.OpenRead(_Host & "/" & filename))
    32. ' aus = stream_reader.ReadToEnd()
    33. ' MsgBox(aus)
    34. myFTP.DownloadFile(_Host & "/" & filename, "C:\testforfrench\" & filename)
    35. End If
    36. End Function
    37. Public Function check(ByVal searchkind)
    38. check = ""
    39. If Not searchkind = "" Then
    40. Dim all As WebHeaderCollection
    41. Dim files()
    42. all = myFTP.ResponseHeaders
    43. file = Dir(_Host & "\*." & searchkind)
    44. If file <> "" Then
    45. Do Until successkind = True
    46. kind = Microsoft.VisualBasic.Right(file, count)
    47. If Microsoft.VisualBasic.Left(kind, 1) = "." Then
    48. expression = kind
    49. successkind = True
    50. End If
    51. count = count + 1
    52. Loop
    53. If kind = LCase("." & searchkind) Then
    54. check = file
    55. Else
    56. check = ""
    57. End If
    58. End If
    59. End If
    60. End Function
    61. End Class
    puh, WebClient
    ?Da kann ich dir net helfen... aber mit WebRequest schon :D

    VB.NET-Quellcode

    1. Private Sub Button1_Click
    2. Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("ftp://" & TextBox1.Text & "/")
    3. request.Method = Net.WebRequestMethods.Ftp.ListDirectory
    4. request.Credentials = New Net.NetworkCredential(TextBox2.Text, TextBox3.Text)
    5. Dim response As Net.FtpWebResponse = request.GetResponse()
    6. .ListBox1.Items.Clear()
    7. Using myReader As New IO.StreamReader(response.GetResponseStream())
    8. Do While myReader.EndOfStream = False
    9. .ListBox1.Items.Add(myReader.ReadLine())
    10. Loop
    11. End Using
    12. ---Zum öffnen eines Ordners---
    13. Private Sub ListBox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDoubleClick
    14. Dim web As New Net.WebClient
    15. TextBox7.Text = "ftp://" &.TextBox1.Text & ListBox1.SelectedItem & "/"
    16. TextBox6.Text = TextBox6.Text & vbCrLf & ListBox1.SelectedItem & "/"
    17. Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("ftp://" & TextBox1.Text & "/" & ListBox1.SelectedItem)
    18. request.Method = Net.WebRequestMethods.Ftp.ListDirectory
    19. request.Credentials = New Net.NetworkCredential(TextBox2.Text,TextBox3.Text)
    20. Dim response As Net.FtpWebResponse = request.GetResponse()
    21. ListBox1.Items.Clear()
    22. Using myReader As New IO.StreamReader(response.GetResponseStream())
    23. Do While myReader.EndOfStream = False
    24. ListBox1.Items.Add(myReader.ReadLine())
    25. Loop
    26. End Using


    Ich hoffe, ich konnte dir weiterhelfen...

    mfg