Lily: Dateidownload

Hi, ich möchte mit Hilfe von diesem Code eine PDF Datei downloaden:

header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename='/dateien/mitglieder/1190469223a9b179.pdf'");
exit();

Wenn ich das Script ausführe wir auch ein Downloadfenster angezeigt. Dies sieht jedoch so aus:
-dateien-mitglieder-1190469223a9b179.pdf

Alle / werden mit - ersetzt. /dateien/mitglieder/ soll jedoch die Pfadangabe sein.

Könnt ihr mir weiterhelfen?

  1. Hallo,

    header("Content-Disposition: attachment; filename='/dateien/mitglieder/1190469223a9b179.pdf'");

    Dies sieht jedoch so aus:
    -dateien-mitglieder-1190469223a9b179.pdf
    Alle / werden mit - ersetzt. /dateien/mitglieder/ soll jedoch die Pfadangabe sein.

    ja, ich verstehe schon, was du vorhast - das geht aber nicht. Du kannst mit der "filename"-Angabe wirklich nur den Dateinamen vorgeben, nicht den Pfad, wo die Datei gespeichert werden soll.

    Könnt ihr mir weiterhelfen?

    In diesem Fall wohl nicht, sorry.

    So long,
     Martin

    --
    Wenn alle das täten, wass sie mich können,
    käme ich gar nicht mehr zum Sitzen.
    1. Hallo,

      header("Content-Disposition: attachment; filename='/dateien/mitglieder/1190469223a9b179.pdf'");

      Dies sieht jedoch so aus:
      -dateien-mitglieder-1190469223a9b179.pdf
      Alle / werden mit - ersetzt. /dateien/mitglieder/ soll jedoch die Pfadangabe sein.

      ja, ich verstehe schon, was du vorhast - das geht aber nicht. Du kannst mit der "filename"-Angabe wirklich nur den Dateinamen vorgeben, nicht den Pfad, wo die Datei gespeichert werden soll.

      Könnt ihr mir weiterhelfen?

      Ja, ich denke schon. Über den Header kannst du, wie oben schon gesagt nur den Dateiname angeben, den der Benutzer später sehen wird. Was du machen musst ich, dass du einfach nach den Headern und vor dem exit noch eine readfile einbaust, in dem du das PDF, dass du anzeigen willst reinlädst. Das wars dann egtl auch schon :) Das ganze sähe dann so aus:

      header("Content-Type: application/pdf");
      header("Content-Disposition: attachment; filename='DeinPDF.pdf'");

      readfile('IrgendeinPDF.pdf');
      exit();

      Gruß
      Moe

      1. Hallo Moe,

        dass du einfach nach den Headern und vor dem exit noch eine readfile einbaust, in dem du das PDF, dass du anzeigen willst reinlädst.

        stimmt, das hat im ursprünglichen Codeauszug von Lily tatsächlich gefehlt. Das Ergebnis wäre gewesen, dass der User eine 0 Byte große PDF-Datei bekommen hätte.

        Jetzt verstehe ich auch endlich, was Lily mit dieser Pfadangabe vermutlich gemeint hat: Das sollte nicht der Pfad sein, in dem die Datei beim User gespeichert werden sollte, sondern der Pfad der Quelldatei auf dem Webserver. Oh, böses Missverständnis!

        header("Content-Type: application/pdf");
        header("Content-Disposition: attachment; filename='DeinPDF.pdf'");
        readfile('IrgendeinPDF.pdf');

        Und das ist dann im konkreten Beispiel wohl

        readfile('/dateien/mitglieder/1190469223a9b179.pdf');

        wobei der Pfad mit Sicherheit noch nicht korrekt ist, weil Lily ihn auf das Basisverzeichnis des Webservers bezogen hat, nicht auf das Dateisystem der Maschine, auf der der Server läuft. Also:

        readfile($_SERVER['DOCUMENT_ROOT'] . '/dateien/mitglieder/1190469223a9b179.pdf');

        exit();

        Viel besser jetzt. ;-)

        Ciao,
         Martin

        --
        Lebensmotto der Egoisten:
        Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!