File Download geht nicht

  • Hallo,

    kann mir bitte jemand bei meinem Problem helfen?
    Ich lese aus einem Verzeichnis Dateien aus und möchte die als Link zum Download ausgeben. Das Funktioniert soweit auch schon. Jetzt möchte ich das erstellungsdatum der Datei (sind PDF Dateien) auslesen und nach diesem Datum absteigend sortieren.Habe dazu auch schon hier Hilfe erhalten. Aber was jetzt nicht mehr geht ist der Download. Steh grad echt im Wald... :? ...
    Obwohl meiner Meinung nach der Pfad Stimmen sollte bekomme ich die Meldung "Die Datei wird nicht gefunden"....

    Poste hier am besten mal ein bischen Code zum besseren Verständnis:

    Im HTML wird das dann über

    <?php echo $filebuffer_p; ?>

    und

    <?php echo $filebuffer_u; ?>

    aufgerufen.

    Es wird mir auch alles vernünftig angezeigt....aber irgendwas stimmt mit dem Link nicht.....

    Hoffe das ist soweit verständlich...bin noch neu hier...

    Bin dankbar für jede Hilfe :)

  • Hast du mal ein paar Beispiele für uns? Den HTML-Code, der ausgegeben wird?

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hallo Dodo,

    im HTML Quelltext wird der Link ausgegeben...habe im ersten Link den basename nicht mit angegeben um den pfad sehen zu können. Ich vermute mein Problem liegt im oberen abschnitt bei

    PHP
    if(isset($_GET['download']))

    .... dann bei....  

    PHP
    if(!preg_match("/^[a-zA-Z0-9-_\W]*\.[a-zA-Z0-9_]*$/", $_GET['download']) || $_GET['download']==".htaccess" || !file_exists($file_p)) 
        { 
            echo "<Script>alert('Die Datei wurde nicht gefunden!')</script>"; 
            echo "<Script>history.back();</script>"; 
            exit(); 
        }

    wenn ich das rauslasse funzt der donwload...

    hier der ausgegebene Quelltext:

    Code
    [COLOR=#000000][COLOR=#0000bb] <tfoot>
    <tr>
    <tr><th><a  href="http://localhost/ms_login_base/useraccount/index.php?download=Test  Download 2.txt"> /private/0/p/Test Download 2  </a></th><td>09. Jun. 2010 11:59:48</td><td  class="currency">Größe: &nbsp;85 KB </td></tr>         </tr>
    </tfoot>
    [/COLOR][/COLOR]

    .
    .
    .

    Code
    [COLOR=#000000][COLOR=#0000bb] <tfoot>
    <tr>
    <tr><th><a  href="http://localhost/ms_login_base/useraccount/index.php?download=Neue  Datenbank.odb">Neue Datenbank </a></th><td>09.  Mar. 2010 16:05:22</td><td class="currency">Größe:  &nbsp;2675 KB </td></tr><tr><th><a  href="http://localhost/ms_login_base/useraccount/index.php?download=falt_ddlaufdl_hoch_mass_3.pdf">falt  ddlaufdl hoch mass 3 </a></th><td>05. Nov. 2009  11:37:15</td><td class="currency">Größe: &nbsp;99007 KB  </td></tr><tr><th><a  href="http://localhost/ms_login_base/useraccount/index.php?download=falt_ddlaufdl_hoch_mass.pdf">falt  ddlaufdl hoch mass </a></th><td>05. Nov. 2009  11:37:15</td><td class="currency">Größe: &nbsp;99007 KB  </td></tr></tr>
    </tfoot>
    [/COLOR][/COLOR]
  • Die Abfrage besteht aus drei Teilen.

    Mach mal Folgendes:
    1) Lösche !preg_match("/^[a-zA-Z0-9-_\W]*\.[a-zA-Z0-9_]*$/", $_GET['download']) || aus der Abfrage.
    2) Prüfe ob es funktioniert
    3.1) Wenn ja: Melde das hier im Forum && Ende
    3.2) Wenn nein: Gib es wieder hinein und lösche || $_GET['download']==".htaccess" aus der Abfrage
    4) Prüfe, ob es funktioniert
    5.1) Wenn ja: Melde es hier im Forum && Ende
    5.2) Wenn nein: Gib es wieder hinein und lösche || !file_exists($file_p) aus der Abfrage
    6) Prüfe, ob es funktioniert
    7.1) Wenn ja: Melde es hier im Forum
    7.2) Wenn nein: Melde es hier im Forum

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Danke für die schnelle Antwort. 8)

    Wenn ich

    PHP
    || !file_exists($file_p)

    entferne geht es....

    Jetzt vermute ich das ich wohl einen Denkfehler habe und das mit der Variablen docs_p ersetzen könnte....??

  • Lass dir mal $file_p ausgeben und überprüfe manuell ob sie existiert.
    Wenn nicht: Suche den Fehler in dem Pfad.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Also...ich habe jetzt folgendes festgestellt:

    1. file_p existiert nicht...da es in dem Array new_files steht....

    2. in echo $docs_p wird mir die unformatierte Zeit ausgegeben

    3. echo $path_p gib mir folgendes aus ./private/0/p/Test Download.txt

    4. Der Download geht zwar aber die Daten werden nicht wirklich heruntergeladen da ich in

    PHP
    readfile($file)


    natürlich nix stehen hab.... :( hab ich übersehen.....

    und nun bin ich vollkommen verwirrt....HELP....

  • PHP
    $file_p = "./private/".$users['ah_kdnr']."/p/".$_GET['download'];


    Existiert diese Datei?
    Bitte beachte dass "./" für das aktuelle Verzeichnis steht. Das Verzeichnis, in dem das Script liegt.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Aaaalso....ich habe mein Script in dem Verzeichnis useraccount...in dem Verzeichnis useraccount liegt dann das Verzeichnis private und die Unterordner in dem Verzeichnis private....sollte dann nach meinem Verständnis richtig sein...

    Habe gesehen das ich einen warnhinweis in meiner Datei nach dem Download stehen hab....das liegt dann wohl nun an readfile schätze ich:

    Beispiel:

    Code
    Warning: readfile(./private/0/p/Neue Datenbank.odb) [function.readfile]: failed to open stream: No such file or directory in C:\xampp\htdocs\ms_login_base\useraccount\index.php on line 59

    Sorry wenn ich mir ein wenig umständlich ausdrücke....aber bin eben kein PHP spezialist und das ist für mich sozusagen learning bei doing...

    Es liegt meiner Meinung nach nun irgendwie an der übergabe oder auslesen der Verzeichnisstruktur....und ich hab voll das Brett vor dem Kopf....

  • "No such file or directory"

    Wenn du dir wirklich zu 100% sicher bist, dass diese Datei existiert, versuche Dateien ohne Leer- und Sonderzeichen zu verwenden.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hab ich getestet...den Namen mit unterstrichen...das geht auch nicht....

    Ich muss jetzt erstmal schluss machen .... wieder kraft tanken...

    Wenn es ok wäre machen wir morgen weiter....bis dahin danke erstmal für die Hilfe.....