none
[Vb.net] Auslesen eines Ordners auf einem https-Server RRS feed

  • Frage

  • Hallo zusammen,


    um es vorweg zu nehmen. ich möchte keinerlei illegale Software programmieren, die irgendwelche Lücken nütz, um an Informationen zu kommen.

    Ich möchte ein Programm entwickeln, das es ermöglicht, dass eine Datei, von der der vollständige Name nicht bekannt ist, von einem https-Servergeladen werden kann.
    Ich habe bisher schon einen einfachen Up und Download via httpwebrequest/response realisiert, der auch sehr gut funktioniert.
    Mein Problem ist nun jedoch, dass der Download zu einer bestimmten Zeit eine bestimmte Datei abholen soll und von dieser Datei ist mir der Name nicht vorllständig bekannt,
    da diese in Ihrem Namen, den Zeitpunkt ihrer Erstellung trägt. Nun bräuchte ich einen Tip, am liebsten ein Codebeispiel, wie ich auf den Ordner zugreifen kann, um über directoryinfo die darin enthaltenen Dateien zu ermitteln.

    Kennt sich hier vielleicht jemand damit aus oder hat mir einen anderen guten Tip? Bin mittlererweile ratlos, wie sich sowas umsetzen lässt.

    Beste Grüße

    noob
    • Bearbeitet noobvb.net Dienstag, 28. Juli 2009 11:42
    Dienstag, 28. Juli 2009 11:29

Antworten

  • Hallo Thomas,

    ich habe eine WinForm-Anwendung und möchte überdiese auf den Server gelangen. Habe mir schon fast gedacht, dass es daran liegt.

    Dann habe ich wohl tatsächlich nur die Möglichkeiten Directory Listing zu verwenden oder einen FTp auf dem Server einzurichten, oder?

    Gruß
    Manuel
    Mittwoch, 29. Juli 2009 12:27
  • Oder, wenn du Zugriff auf den Server hast, einen kleinen WebService basteln, der den Dateinamen / die Datei direkt liefern kann. Dieser läuft dann schön auf dem Server und kann auch das "herausfinden" des genauen Dateinamens abarbeiten
    Mittwoch, 29. Juli 2009 13:10

Alle Antworten

  • Mit System.IO kommst Du auf einem Webserver nicht zum Ziel; auflisten von Dateien in einem Verzeichnis eines Webservers funktioniert NUR wenn der Webserver für dieses Verzeichnis das auch erlaubt (und dann bekommst eine HTML Seite die Du parsen mußt).

    So würde ein Directory Listing aussehen:

    http://www.myownbusiness.org/include/

    Chris

    Christoph Wille - MVP ASP.NET, Glengamoi Alumni - Realnamen sind ein Gebot der Höflichkeit in der Community
    Dienstag, 28. Juli 2009 11:42
  • Hallo Chris,

    vielen Dank für die Antwort. Wenn der Server dies erlauben würde, wie müsste ein parsen der HTML Seite aussehen?

    Beste Grüße
    Manuel
    Dienstag, 28. Juli 2009 11:44
  • Hallo Chris,

    ich nehme mal an, dass ich eine index.html oder irgend so etwas als ressource benötige oder? Wird das beim Listing ausgeblendet? Denn bei dem Beispiellink, den du mir gegeben hast, wird keine .html Seite, sondern nur ein Ordner angezeigt. Wie macht man die dahinter liegende Seite sichtbar?

    Gruß
    Manuel
    Dienstag, 28. Juli 2009 11:56
  • Hi Manuel,

    das was du dort siehst ist ja eine HTML-Seite (diese zeigt die halt einen Verzeichnissinhalt an). Lass dir in deinem Browser einfach mal den Quelltext anzeigen, dann siehst du das dies ganz einfaches HTML ist. Nun musst du dies nur einlesen, und "durcharbeiten" / parsen um die Stelle zu finden, in der deine Datei steht.

    Wenn du Teile des Dateinamens kennst wirst du hier wahrscheinlich mit einer RegExp relativ schnell an dein Ziel kommen.

    Grüße

    Thomas
    Dienstag, 28. Juli 2009 12:03
  • Hallo Thomas,

    danke für die Antwort.
    Habe in meinem Beispiel bereits versucht, die Datei durchzuarbeiten. Hier hatte ich aber das Problem, dass der Stream, den ich durchlesen will, leer ist, wenn ich einfach nur den Pfad ohen Dateinamen angegeben habe. Habe ich hier etwas falsch gemacht? Ich denke, denke ich benötige den Dateinamen der Index-Datei. Wie heißt diese standardmäßig?


    Gruß
    Manuel
    Dienstag, 28. Juli 2009 12:19
  • Nochmal ich...

    wieso lässt sich eigentlich das nicht realisieren?

     Dim url1 As New Uri( _
                "http://account.europe.webmatrixhosting.net/projekt/" & KurzName & _
                "/" )
     
    
    Dim sPfad As String = Server.MapPath(url1.LocalPath)
     
            Dim di As New DirectoryInfo(sPfad)
            For Each file As FileInfo In di.GetFiles
                Debug.WriteLine(file.Name)
            Next

     

    Das habe ich in einem anderen Forum gefunden. Ich kann jedoch nicht auf Server.MapPath zugreifen.(Gibt es bei mir nicht).
    Kann mir jemand sagen, warum das nicht funktioniert? Bei der Person, die es gepostet hat, soll es funktionieren und das wäre eigentlich schon die Lösung für mich.

    Gruß
    Manuel
    Dienstag, 28. Juli 2009 12:30
  • Hallo noobvb.net,

    Versuch mal mit:

    Dim files() As String = IO.Directory.GetFiles(Server.MapPath(url1.LocalPath))


    DirectoryInfo-Klasse:

    http://msdn.microsoft.com/de-de/library/system.io.directoryinfo.aspx

    Grüße,

    Robert

    Mittwoch, 29. Juli 2009 08:44
    Moderator
  • Hallo Robert,

    vielen Dank für die Antwort.
    Leider funktioniert es bei mir nicht, da "Server" als nicht deklariert erkannt wird. Muss ich hier noch irgend eine besondere Klasse einbinden?

    Gruß
    Manuel
    Mittwoch, 29. Juli 2009 10:50
  • Hallo Thomas,

    habe das jetzt mal so versucht:

     Dim URI As New Uri("https://xxx/xxx/")
            Dim Server As HttpServerUtility
                  Dim files() As String = IO.Directory.GetFiles(Server.MapPath(URI.LocalPath))
            For i As Integer = 0 To files.Count - 1
                MsgBox(files(i))
            Next

     Dies klappt aber nicht. Folgende Fehlermeldung erscheint: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
    Und vor dem Ausführen wird daruf hingewiesen, dass die Variable "Server" verwendet wird, bevor ihr ein Wert zugewiesen wird. Mit "New" bin ich aber auch nicht weiter gekommen. Was habe ich falsch gemacht? Habe mich eigentlich an die Beispiele in dem von dir geposteten Link gehalten.

    Beste Grüße

    Manuel
    Mittwoch, 29. Juli 2009 12:04
  • Was für eine Art von Anwendung (Konsolenanwendung, WinForm, Web, ...) möchtest du den bauen? Wenn ich mich nicht täusche kann das HttpServerUtility nur innerhalb einer Web-Anwendung verwendet werden, da dies auf den aktuellen Server-Context geht, in einer Konsole ist dieser nicht vorhanden und damit null / nothing und deine Exception würde sich erklären.
    Mittwoch, 29. Juli 2009 12:24
  • Hallo Thomas,

    ich habe eine WinForm-Anwendung und möchte überdiese auf den Server gelangen. Habe mir schon fast gedacht, dass es daran liegt.

    Dann habe ich wohl tatsächlich nur die Möglichkeiten Directory Listing zu verwenden oder einen FTp auf dem Server einzurichten, oder?

    Gruß
    Manuel
    Mittwoch, 29. Juli 2009 12:27
  • Oder, wenn du Zugriff auf den Server hast, einen kleinen WebService basteln, der den Dateinamen / die Datei direkt liefern kann. Dieser läuft dann schön auf dem Server und kann auch das "herausfinden" des genauen Dateinamens abarbeiten
    Mittwoch, 29. Juli 2009 13:10
  • Hallo noobvb.net,

    Haben Dir die Antworten weiter geholfen?

    http://forum.fachinformatiker.de/net/129932-vb-net-serververzeichnis-durchsuchen.html

    Grüße,

    Robert

    Dienstag, 18. August 2009 12:58
    Moderator
  • Hallo Robert,

    die Antworten haben mir in sofern weiter geholfen, dass ich nun weiß,
    welche Optionen mir zur Verfügung stehen und welche Informationen ich noch von den Serverbetreibern benötige.

    Die Antworten decken sich ja mit den Aussagen in diesem Forum.

    Gruß
    Manuel
    Donnerstag, 1. Oktober 2009 09:23