Richtige frage? Url inkl. Dateinamen mit C++ checken?



  • Hallo, bin neu *rotwerd* aber ich hab ne Frage die mich schon SEHR lange beschäftigt. Gibt es da eine Möglichkeit eine Url per C++ einzulesen und zu prüfen ob die Datei in der Url vorhanden ist?

    Das ganze nochmal veranschaulicht:

    Habe eine Url... naja sagen wir mal www.schoenebildchen.de 😉 ich weiß auch, auf www.schoenebildchen.de gibt es eine datei die heißt uhh.jpg
    ich will aber auch den Rest, finde mich auf der seite aber nicht zurecht.
    Deshalb schreibe ich ein C++ programm das mir namen alla uhh1.jpg, uhh2.jpg generiert und die ich dann abfragen kann. Kurz und knapp: wie check ich denn jetzt ob die dateinamen auf dem server wirklich existieren? (bitte nicht so antworten wie: per hand :D)

    Freue mich auf Antworten
    Gruß testyc



  • sry..jetzt bin ich eingeloggt... ich bin immernoch gespannt.. 😃

    nur komisch das zu meinem thread niemand antwortet 😞 ist das Thema denn zu schwierig für c++? (Ps: das oben genannte beispiel ist lediglich nur ein gag bitte nicht beleidigt sein, ich muss lediglich serverdateilisten erstellen, die ich dann später bearbeiten kann.)

    wie gesagt .. ich freue mich immernoch auf antwort.



  • Hallo,

    das, was Du vorhast, ist nicht möglich. Das HTTP-Protokoll erlaubt kein Auflisten von Verzeichnissen und das bräuchtest Du hier. Der Grund dafür ist ganz einfach: Eine URL entspricht keinem Pfad!

    Das ist ein häufig gemachter Fehler weil viele Webserver so tun, als sei eine URL ein Pfad und man würde eine Datei abrufen. Das ist aber nicht wirklich so sondern ein Implementierungsdetail des Webservers.



  • Testen ob eine Datei existiert machst du wohl am einfachesten mit Programmen wie wget. Hier z.B. ein geradezu dilletantisches Bashskript für das obige Problem:

    #!/bin/bash
    
    # test.sh
    
    PREFIX="http://www.schoenebildchen.de/uhh"
    SUFFIX=".jpg"
    I_MIN=1
    I_MAX=99
    
    for (( I = $I_MIN; $I <= $I_MAX; I++ ))
    do
        if wget --spider ${PREFIX}${I}${SUFFIX} 2> /dev/null
        then
            echo ${PREFIX}${I}${SUFFIX}
        fi
    done
    

    Ein einfacher Aufruf über

    sh ./test.sh > liste
    

    generiert dir eine Liste der existierenden Dateien in liste. So ähnlich lässt sich mit Sicherheit auch etwas für den Windows-Befehlszeileninterpreter schreiben.
    IMO ist C++ dafür aber ziemlich ungeeignet.


Anmelden zum Antworten