Existierendes Verzeichnis erkennen und entsprechend handeln

  • Hallo,

    ich habe da wohl eine Gedanken-Blockade oder so was.

    Auf einer Upload-Seite kann ich ein zu erstellendes Verzeichnis angeben. Wenn dieses Verzeichnis existiert soll gefragt werden, was mit den hochzuladenden Dateien passieren soll. Lokal funktioniert die Erkennung ganz gut, es öffnet sich eine LightBox und fragt, was eben passieren soll. Aber wie gebe ich das Resultat jetzt weiter. Ich bin mir sicher, dass es etwas ganz simples ist, aber irgendwie komme ich nicht drauf.

    Außerdem habe ich jetzt feststellen müssen, dass das Scirpt

    auf meinem Server gar nicht funktioniert. Angeblich existiert ein existierendes Verzeichnis nicht.

    Zum Testen hier mal klicken. Das Verzeichnis test existiert.

  • Offenbar resultiert es immer in einem Fehler, wenn Du ein Verzeichnis als URL in einem Ajax-Aufruf angibst. Schreibe stattdessen ein Miniscript, das mit file_exists() prüft, ob das Verzeichnis existiert und gib eine entspr. Kennung z. B. "true"/"false" zurück, die kannst Du dann in done() auswerten kannst.

  • Offenbar resultiert es immer in einem Fehler, wenn Du ein Verzeichnis als URL in einem Ajax-Aufruf angibst. Schreibe stattdessen ein Miniscript, das mit file_exists() prüft, ob das Verzeichnis existiert und gib eine entspr. Kennung z. B. "true"/"false" zurück,

    in PHP? das ist kein Problem,

    die kannst Du dann in done() auswerten kannst.

    aber hier kann ich Dir nicht folgen. Zu done() habe ich nicht viel gefunden und das Wenige bezieht sich immer auf ein und dasselbe Script, welches ich irgendwie nicht verstehe.

  • Das "resultiert wahrscheinlich immer in einem Fehler" muss ich korrigieren: Ich habe es jetzt nicht genau untersucht, aber ich erwarte dass sich der Aufruf eines Verzeichnisses mit Ajax genauso verhält wie der Aufruf im Browser: Ist das Verzeichnis für Directory-Browsing freigegeben, wird das HTML des Directory-Listings zurückgegeben, ist es gesperrt, führt es zu einem Fehler.


    Was das done() betrifft: Diese Funktion wird aufgerufen, wenn der Ajax-Aufruf erfolgreich war und hat die Ausgabe des Skriptes als Parameter. Müsste dann so aussehen:

    Ungetestet.

  • Ich habe das Directory-Browsing freigegeben (glaube ich jedenfalls), funktioniert aber immer noch nicht.

    Alleine des Lernens wegen gefällt mir aber die zweite Variante eh besser.

    Ich glaube, ich habe gerade googles CO2-Bilanz gekippt, verstehe es aber immer noch nicht so richtig und bekomme es auch nicht zum Laufen.

    Zuerst mal, muss es nicht in Zeile 7 data: vdir heißen?

    Wie gebe ich nun aber das Ergebnis der checkdir.php zurück? Ich habe es auch schon mit success statt .done versucht, doch während das Zweite immer sagt, das Verzeichnis existiert nicht behauptet das Erste IMMER, das Verzeichnis existiere.

    Das Problem ist aber auch, dass es beinahe keine passenden PHP-Dateien zu den Scipten bei googel zu finden gibt.

  • Zitat

    Zuerst mal, muss es nicht in Zeile 7 data: vdir heißen?

    Da hast Du vollkommen recht, so wie es da steht, ist es Blödsinn. So sollte es richtig sein:

    Code
    1. $.ajax({
    2. url: "checkdir.php",
    3. data: {dir: vdir}
    4. }).done(function(output) {

    success und done sollten eigentlich gleichwertig sein. Ich werde mal ein vollständige Testseite machen ...

  • So, dieses funktioniert bei mir:

    checkdir.php:

    PHP
    1. <?php
    2. if (isset($_POST['dir'])) {
    3. if (file_exists($_POST['dir'])) {
    4. echo "true";
    5. } else {
    6. echo "false";
    7. }
    8. }
    9. ?>
  • Naja, wenigstens die PHP-Datei hatte ich richtig :).

    Ja, so funktioniert es jetzt, danke :) :). Das war das, was ich eigentlich für das leichte Problem gehalten habe, jetzt kommt das Schwierige - die Ausgabe des Fensters abzufangen und auszuwerten. Aber wie es mir gerade scheint ist das eigentlich ganz simpel. Denke, das bekomme ich hin.

    Wirklich mal #Sempervivum, ohne Dich würde ich ganz schön alt aussehen. Danke.