FTP Rekursiver download

  • VB.NET
  • .NET 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    FTP Rekursiver download

    Moin :)

    Mir ist klar, dass man bei einem FTP Server Dateien nur einzeln downloaden kann. Ich muss allerdings einen Ordner mit ca 3 Unterordnern sowohl runter als auch hochladen.
    Wenn ich mit ftprequest listdirectory arbeite, bekomme ich zwar alle Dateien gelistet, aber auch die Ordner ohne Endung.

    Habe mich soweit vorgearbeitet, dass ich auflisten und downloaden kann. Aber eben nur einzelne Files.

    Help me please :)
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    Habe mich soweit vorgearbeitet, dass ich auflisten und downloaden kann. Aber eben nur einzelne Files.


    Nun wie machst du es denn?
    Am besten du zeigst was du hast und dann helfen wir dir das so aufzurufen das du nacheinander einen ganzen Ordner runterlädst.

    Grob wäre das so:

    VB.NET-Quellcode

    1. Sub DownloadDirectory(DirName as String)
    2. For each FileName in GetFileList(DirName)
    3. DownloadFile(FileName)
    4. Next
    5. End Sub
    6. Function GetFileList(DirName as String) as LIst(of String)
    7. 'Iwas mit WebRequestMethods.Ftp.ListDirectory;
    8. End Function
    9. Sub DownLoad(FileName as string)
    10. 'Iwas mit WebRequestMethods.Ftp.DownloadFile;
    11. End Sub
    Das ist meine Signatur und sie wird wunderbar sein!
    Also ich mache es so:

    VB.NET-Quellcode

    1. Private Sub Download_FTP_Folder(ByVal Folder As String, ByVal User As String, ByVal Pw As String)
    2. Try
    3. Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create(Folder)
    4. request.Method = Net.WebRequestMethods.Ftp.ListDirectory
    5. request.Credentials = New Net.NetworkCredential(User, Pw)
    6. Dim response As Net.FtpWebResponse = request.GetResponse()
    7. Using myReader As New IO.StreamReader(response.GetResponseStream())
    8. Do While myReader.EndOfStream = False
    9. Dim filename As String = myReader.ReadLine()
    10. List_Files.Add(filename)
    11. Loop
    12. End Using
    13. Catch ex As Exception
    14. Throw ex
    15. End Try
    16. End Sub


    Dabei schreibe ich mir ja alle files in das Array. Wenn die Schleife aber über einen Ordner stolpert, wird der als Datei erkannt, bzw ohne Endung wie andere Files ins Array hinzugefügt. Und da ist mein problem. Ich mässte die Struktur hinbekommen, und das ist es. Vlt seh ich den Wald vor lauter Bäumen nicht, aber da geht es nicht weiter :D
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~