Mithilfe von PHP Dateien auf FTP-Server auslesen und in VB.Net auswerten

  • PHP

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von jmj.

    Mithilfe von PHP Dateien auf FTP-Server auslesen und in VB.Net auswerten

    Hallo!

    Ich würde gerne mithilfe von PHP die Dateien auf meinem FTP-Server auslesen und diese dann in VB.NET anzeigen lassen, sodass ich keine FTP-Daten in meinen Code schreiben muss.
    Irgendwelche Ideen?

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

    Ich würde dir empfehlen die Ausgabe via JSON zu machen.

    PHP hat eine Funktion scandir welche dir ein Array mit den Inhalten eines bestimmten Verzeichnisses zurück liefert.
    Dieses könntest du ganz einfach mit json_encode serialisieren und mit VB.NET mithilfe der Newtonsoft.Json Bibliothek parsen.

    Zum Beispiel in etwa so:

    PHP-Quellcode

    1. <?php
    2. printf(json_encode(scandir("./")));
    3. ?>


    Und in .NET kannst du dann wenn du die Bibliothek z.B. mit NuGet installiert hast das Array so durchlaufen:

    C#-Quellcode

    1. JArray foo = JArray.Parse(new WebClient().DownloadString("http://deinedomain.de/deinphpfile.php"));
    2. foreach(var bar in foo)
    3. {
    4. Console.WriteLine(bar);
    5. }


    Ist zwar C# aber lässt sich ja easy portieren. Und ach ja, besser nen HttpClient anstelle vom WebClient nutzen, hatte gerade VS nicht zur Hand und wollte aber sicher gehen das dies jetz kein Pseudocode wird.
    Müsste so auf Anhieb funktionieren.

    Edit: Eine Ausgabe in der Console sieht dann z.B. so aus:
    Bilder
    • ss+(2016-12-05+at+05.39.01).png

      8,5 kB, 993×519, 168 mal angesehen

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

    Dann funktionierts eigentlich ähnlich. Du musst das PHP Skript halt bisschen anpassen, sodass es nicht mehr als JSON enkodiert und dir ein eigenes "Format" ausdenken, dass du dann in VB.NET auch selbst parsen musst.
    Ist dann halt schwieriger. Was spricht denn gegen das Nutzen einer Bibliothek?
    Okay, eine ganz einfache Lösung wäre folgende:

    PHP-Quellcode

    1. <?php
    2. $foo = scandir("./");
    3. foreach($foo as $bar)
    4. {
    5. printf("%s;", $bar);
    6. }
    7. ?>


    C#-Quellcode

    1. var foo = new WebClient().DownloadString("http://api.yothri.com/v2/base/test.php");
    2. foreach (var bar in foo.Split(';'))
    3. {
    4. Console.WriteLine(bar);
    5. }


    Eine Erklärung gefällig? Im PHP Dokument wird jetzt jeder einzelne Eintrag im Array der von ​scandir zurück geliefert wird mit einem Semikolon (;) getrennt und dann ausgegeben.
    Dies hat allerdings den Nachteil, dass es keinen Ordner oder keine Datei geben darf welcher/welche ein Semikolon im Namen hat, sonst funktioniert das ganze nicht mehr wie gewollt.
    Du kannst das Zeichen auch mit 'nem anderen ersetzen wenn du möchtest.