FTP - Folder exists

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von xtts02.

    FTP - Folder exists

    Hallo,

    So erstelle ich einen Ordner auf meinem FTP Server:

    VB.NET-Quellcode

    1. Dim cred As NetworkCredential = New NetworkCredential(USER, PW)
    2. Dim request As FtpWebRequest = FtpWebRequest.Create(HOST + "/meinordner")
    3. request.Method = WebRequestMethods.Ftp.MakeDirectory
    4. request.Credentials = cred
    5. Dim response As FtpWebResponse = request.GetResponse()
    6. response.Close()


    Das geht auch gut.
    Aber wenn der ordner bereits existiert, kommt ein fehler :
    Der RemoteServer hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar.

    Gibts sowas wie folder.exists bei ftp?
    oder wie kann ich das prüfen?

    *Topic verschoben*
    C# Developer
    Learning C++

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Bitte beachte: Kein Passwörter im Quellcode!
    Warum steht da ein "/"?
    Wobei ich dir davon abrate, da FTP verdammt unsicher ist! FTP must die!
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Trade“ ()

    ^
    |
    Fail
    @Trade
    ZITAT VON TE,
    Aber wenn der ordner bereits existiert, kommt ein fehler :

    Der RemoteServer hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar.

    Gibts sowas wie folder.exists bei ftp?
    Was hat Dein unnötiger Post, mit Seiner Frage gemeinsam?!
    Zu Deinem Edit: Ehmm...
    VARIABLEPFAD PLUS ein vordefiniertes Ordner muss durch "/" getrennt werden, nicht durch "\" wenn Du das anmerken wolltest...
    Beispiel...

    VariableString X ist "Fail" + "/meinordner" oder, VariableString X ist "Fail" + "/" + meinordner...
    Sons heißt es:
    FailMeinOrdner...


    Du könntest ja mit der Exception was anfangen...
    If 550 Then, "Ordner bereits in Verfügung bzw. in Vorhandeheit..."
    Ähnlicher Post, [VB 2008] if file exists on ftp
    Mfg.eniking1998

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „enIking1998“ ()

    Trade schrieb:

    So?

    VB.NET-Quellcode

    1. request.Credentials = New System.Net.NetworkCredential("UserName", "Password")



    Bitte beachte: Kein Passwörter im Quellcode!
    Wobei ich dir davon abrate, da FTP verdammt unsicher ist! FTP must die!
    Zudem ist fraglich, ob du das überhaupt abfragen musst.
    Liegt wahrscheinlich an den Credentials.

    @enIking1998
    Das bringt ihm doch null?! Er will die Exception unter anderem weg haben und das ganze fixen und nicht die Exception abfangen!

    1) Die FTP Daten stehen später nicht im Code. Das ist nur übergangsweiße.
    2) Die Daten sind korrekt. Der ordner wird auch erstellt. Probleme gibts nur wenn er bereits existiert.

    enIking1998 schrieb:


    ^

    Du könntest ja mit der Exception was anfangen...

    If 550 Then, "Ordner bereits in Verfügung bzw. in Vorhandeheit..."

    Mfg.eniking1998


    Und wie kann ich genau diese 550er meldung abfangen.
    Ich will kein dirty try catch..
    C# Developer
    Learning C++

    enIking1998 schrieb:

    Gibts sowas wie folder.exists bei ftp?
    Was hat Dein unnötiger Post, mit Seiner Frage gemeinsam?!

    Eine Hinweisung, dass FTP-Unsicher ist, ist in dem Fall einfach nur richtig.

    Hier gibt es ein Tutorial. [VB 2008] FTP-Tutorial
    Ich würde aber auch dazu tendiere das ganze wenn, per PHP Upload bzw. per PHP zu überprüfen.

    Dazu führst du das Skript aus und verwaltest die Antwort. php.net/manual/de/book.ftp.php
    Einer hört FTP unsicher, alle schreien FTP unsicher.
    Solange ihr nicht wisst was er mit FTP machen möchte, könnt ihr davon nicht abraten.
    Wenn er einen Chat,... machen möchte -> FTP = Schlecht.
    Wenn er einen FTP-Client machen möchte -> FTP = Gut, besser wäre FTPS.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Erledigt!
    Hab ne Lösung gefunden. Ein anderer User in nem anderen Forum hatte das selbe Problem.
    So kann man checken ob der Ordner existiert oder nicht:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim request = _
    3. DirectCast(WebRequest.Create _
    4. ("ftp://myserver.net/myfolder/"), FtpWebRequest)
    5. request.Credentials = _
    6. New NetworkCredential("USER", "PASS")
    7. request.Method = WebRequestMethods.Ftp.ListDirectory
    8. Try
    9. Using response As FtpWebResponse = _
    10. DirectCast(request.GetResponse(), FtpWebResponse)
    11. ' Folder exists here
    12. MsgBox("exists!")
    13. End Using
    14. Catch ex As WebException
    15. Dim response As FtpWebResponse = _
    16. DirectCast(ex.Response, FtpWebResponse)
    17. 'Does not exist
    18. If response.StatusCode = _
    19. FtpStatusCode.ActionNotTakenFileUnavailable Then
    20. MsgBox("Doesn't exist!")
    21. End If
    22. End Try
    23. End Sub
    C# Developer
    Learning C++
    @Rikudo
    Naja, das mit einem Try-Catch zu lösen finde ich nicht so schön.
    Besser fände ich mir einfach alle auflisten zu lassen und dann den gesuchten Ordner mit dem gefundenen abzugleichen.
    Da kann man dann auch Rechtschreibfehler und/oder Groß- und Kleinschreibung mit einbeziehen.
    (Hier halt eine Liste statt einer ListBox)

    VB.NET-Quellcode

    1. Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("Link zum FTP-Ordner")
    2. request.Method = Net.WebRequestMethods.Ftp.ListDirectory
    3. request.Credentials = New Net.NetworkCredential("Benutzername", "Passwort")
    4. Dim response As Net.FtpWebResponse = request.GetResponse()
    5. ListBox1.Items.Clear()
    6. Using myReader As New IO.StreamReader(response.GetResponseStream())
    7. Do While myReader.EndOfStream = False
    8. ListBox1.Items.Add(myReader.ReadLine())
    9. Loop
    10. End Using


    Quelle:
    [VB 2008] FTP-Tutorial

    enIking1998 schrieb:

    SFTP heißt es doch...
    Es gibt beides.
    dmsolutions.de/faq/anleitungen…ischen-sftp-und-ftps.html
    Aber für beide Variante muss der Server auch mit machen.
    Wenn der nur natives FTP zur Verfügung stellt, muss man eben FTP verwenden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --