Prüfen, ob eine Datei in Ordner vorhanden (Webserver)

  • VB.NET

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

    Prüfen, ob eine Datei in Ordner vorhanden (Webserver)

    Hallo!
    Kennt jemand zufällig einen Code, mit dem ich auf meinem Webserver prüfen kann, ob eine Datei (xy.exe) in einem Ordner vorhanden ist.
    Es geht dabei um keine bestimmte Datei, es soll nur geprüft werden, ob der Ordner leer oder nicht leer ist und falls er nicht leer ist, soll der Pfad der im Ordner vorhandenen Datei in eine Textbox geschrieben werden!
    Ich hoffe, ihr könnt mir helfen!

    VB.NET-Quellcode

    1. Try
    2. Dim httpwebreq As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://www.deineurl.de/deinedatei.mp3") httpwebreq.GetResponse()
    3. MessageBox.Show("Vorhanden")
    4. Catch ex As Net.WebException
    5. MessageBox.Show("Nicht Vorhanden")
    6. End Try


    Diesen Code hab ich hier im Forum gefunden.
    Der GetResponse-Befehl prüft, ob vom HTTPWebRequest eine Antwort kommt
    Die Net.WebException wird bei einem Fehler ausgeführt.
    Mit diesem Code wird geprüft, ob eine Datei existiert,
    aber eig. möchte ich wissen, ob das Verzeichnis leer ist und wenn nicht, sollen die Dateien ausgelesen werden.

    Mit diesem Code

    VB.NET-Quellcode

    1. If My.Computer.FileSystem.GetFiles("C:\Ordner\").Count = 0 Then
    2. MsgBox("Keine Dateien enthalten")
    3. End If

    funktioniert es nur bei Ordnern auf meinem PC, httpwebreq zu integrieren fehlgeschlagen... :(

    Wenn ich das Verzeichnis über meinen Webbrowser aufrufe, erscheint übrigens der 403-Error.
    Die Zugriffsrechte des Verzeichnises sind auf 777 gesetzt.
    ...
    Hoffe auf hilfreiche Beiträge!
    Moin,

    Das könnte bzw müsste dir helfen!

    VB.NET-Quellcode

    1. Private sClient as new Net.WebClient
    2. sClient.Credentials = New Net.NetworkCredential("Benutzername", "Passwort")
    3. 'Überprüfe , ob der Ordner verfügbar ist
    4. Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create("ServerPfad")
    5. request.Method = Net.WebRequestMethods.Ftp.ListDirectory
    6. request.Credentials = New Net.NetworkCredential("Benutzername, Passwort")
    7. Try
    8. ServerRersponse = request.GetResponse()
    9. ServerRersponse.Close()
    10. 'Alles funktioniert wie gewünscht:
    11. Catch ex As Exception
    12. ServerRersponse.Close()
    13. 'Fehler RemoteServer
    14. Exit Sub
    15. End Try


    Grüße
    Entschuldige, wenn ich wieder etwas falsch gemacht habe, aber:


    Hast du den Code eig. schon ausprobiert, bzw. funktioniert es bei dir?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Max1001“ ()

    Ja sicher funktioniert es, das Problem ist nur das du die Grundlagen nicht kannst, das fängt schon damit an das du Anfangs den Code einfach so in den Editor kopiert hast, ohne eine Prozedur zu erstellen.. Nach Benutzername fällt lediglich ein " Das hättest du auch selbst rausbekommen können...


    Grüße
    Ich werde mir das demnächst anschauen! Thx
    Noch eine kurze abschließende Frage:

    VB.NET-Quellcode

    1. If Directory.GetFiles("").Length = 0 Then
    2. ...
    3. End If


    Mit diesem Befehl kann ich nichts im Internet aufrufen.
    Hab schon viel herumprobiert, ich schaff es nicht! :(
    Also ich hab auch Stunden gebraucht, ums zu peilen. Ich hab immer gedacht, ich müsste noch einen RootFolder meines Webspaces angeben, aber das muß man eben nicht. Hiermal 1 Form mit 1 Listbox

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Net
    3. Public Class frmFtpRequest
    4. Private Sub ListDir(ByVal path As String, Optional ByVal credential As NetworkCredential = Nothing)
    5. Dim request = Net.WebRequest.Create(path)
    6. request.Method = Net.WebRequestMethods.Ftp.ListDirectory
    7. If credential Is Nothing Then
    8. ListBox1.Items.Add(String.Concat("no credentials applied to: ", path))
    9. Else
    10. With credential
    11. ListBox1.Items.Add(String.Concat(.UserName, ", ", .Password, " applied to: ", path))
    12. End With
    13. request.Credentials = credential
    14. End If
    15. Try
    16. Using resp = request.GetResponse(), sr = New StreamReader(resp.GetResponseStream)
    17. While Not sr.EndOfStream
    18. ListBox1.Items.Add(sr.ReadLine)
    19. End While
    20. End Using
    21. Catch ex As WebException
    22. ListBox1.Items.Add("#### fail ####")
    23. End Try
    24. ListBox1.Items.Add(New String("-"c, 40))
    25. End Sub
    26. Private Sub frmFtpRequest_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    27. 'ohne credentials kann man auch was listen!
    28. ListDir("ftp://home.arcor.de") 'listet den RootFolder
    29. ListDir("ftp://home.arcor.de/pub") 'listet den RootFolder/pub
    30. Dim cred As New NetworkCredential(userName:="eckardahlers", password:="*********")
    31. ListDir("ftp://home.arcor.de/", cred) 'listet **meinen** RootFolder
    32. ListDir("ftp://home.arcor.de/Common", cred) 'listet **meinen** RootFolder/Common
    33. End Sub
    34. End Class


    interessant, dass arcor auch einen öffentlichen Ordner anbietet, den man ohne Credentials auslesen kann.

    Und wer jetzt mein passwort rauskriegt, kann meine WebSite verbessern ;)