pdf-Download

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • pdf-Download

    Hallo

    Ich habe eine Frage und zwar möchte ich von meiner Homepage bestimmten Usern die Möglichkeit geben was zu downloaden. Ich habe auch schon einen geschützen Bereich erstellt in den nur angemeldete User kommen.

    Nun möchte ich den Usern einige pdf-Dateien zum download anbieten. Leider öffnen sich die Dateien immer automatisch im Browser. Gibt es einen Befehl mit dem ich das verhindern kann und bestimmen kann, dass man nur downloaden kann?

  • #2
    benutze mal die Suchfunktion des Forums, da wirst du bestimmt fündig!

    Kommentar


    • #3
      Oder lies im Manual zum Thema header()

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Die Suche hat leider keine Lösung offenbart.

        Das Manuel hat mir leider auch nicht weitergeholfen, da es mit header() wohl probleme beim späteren öffnen gibt.

        Gibt es sonst noch eine Möglichkeit?

        Kommentar


        • #5
          ja: noch mal lesen. das manual behandelt genau dieses thema.

          Kommentar


          • #6
            Haben nun nochmal gelesen und habe
            header('Content-Disposition: attachment; filename="Produktblatt HWfoko manager deutsch.pdf"');
            gefunden.

            Da ich noch neu auf dem Gebiet bin habe ich noch ne frage. Wie kann ich denn das nun so in mein html einfügen, dass es als download funktioniert. Zur Zeit nutze ich ja noch den "a href" Befehl. Wie kann ich die beiden denn nun austauschen? bzw verknüpfen?

            Kommentar


            • #7
              *vorkau*

              PHP-Code:
              <?php

              /**
               * @file download.php
               **/
              $sPDFPath 'dein pfad zur pdf';

              header('Content-Type: application/octet-stream');

              // Damit dein Browser weiss, wie Gross die Datei ist.
              header('Content-Length: ' filesize($sPDFPath));

              // Die Datei wird als [[filename]] angeboten.
              header('Content-Disposition: attachment; 
                           filename="Produktblatt%20HWfoko%20manager%20deutsch.pdf"'
              );

              // Sourcefile einlesen und ausgeben, durch die setzung von Content-Disposition
              // wird die Datei nicht angezeigt, sondern als Download angeboten.
              readfile($sPDFPath);

              ?>
              und in deiner HTML Datei als <a href...>

              Code:
              <a href="download.php">PDF Datei download</a>
              Das nächste mal bitte intensiver suchen.


              header();
              readfile();
              Zuletzt geändert von Skaschy; 12.09.2007, 09:09.

              Kommentar


              • #8
                vielen Dank, aber leider geht es nicht. Er ruft zwar die Datei "download.php" auf, aber er bietet nichts zum download an.

                meine download.php sieht so aus:
                Code:
                <?php session_start (); ?>
                <?php 
                include ("checkuser.php"); 
                ?>
                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                <html xmlns="http://www.w3.org/1999/xhtml">
                <head>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                <title>Download</title>
                </head>
                <?php
                
                /**
                 * @file download.php
                 **/
                $sPDFPath = '../Produktbl&auml;tter/';
                
                header('Content-Type: application/octet-stream');
                
                // Damit dein Browser weiss, wie Gross die Datei ist.
                header('Content-Length: ' . filesize($sPDFPath));
                
                if(isset ($_REQUEST["hwfokoman"]))
                {
                  // Die Datei wird als [[filename]] angeboten.
                   header('Content-Disposition: attachment; 
                                filename="Produktblatt%20HWfoko%20manager%20deutsch.pdf"'); 
                }
                
                
                // Sourcefile einlesen und ausgeben, durch die setzung von Content-Disposition
                // wird die Datei nicht angezeigt, sondern als Download angeboten.
                readfile($sPDFPath);
                
                ?>
                <body>
                </body>
                </html>
                und meinne Tabelle in html sieht wie folgt aus:
                Code:
                <td class="bodyText"><a href="download.php?hwfokoman=1" class="Stil7">HWfoko manager </a><a href="../Produktbl&auml;tter/Produktblatt HWfoko manager deutsch.pdf" class="bodyText Stil7"></a></td>
                Zuletzt geändert von Ceene; 12.09.2007, 09:41.

                Kommentar


                • #9
                  error_reporting() voll aufgedreht und keine Fehler ? Mach in deinem if(isset(... mal testweise ein die('Komme in\'s if rein'); und schau ob dir das angezeigt wird.
                  Und erklär mir mal bitte wie du einen Pfad als PDF ausgeben willst oder die Filegrösse eines Pfades ermitteln willst

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Ich habe nun die Datei nochmal angepasst, aber leider öffnet er nur die download.php und bietet nichts zum download an.

                    Code:
                    <?php session_start (); 
                    include ("checkuser.php"); 
                    /**
                     * @file download.php
                     **/
                    $sPDFPath = '../Produktbl&auml;tter/';
                    
                    header('Content-Type: application/octet-stream') OR die(mysql_error());
                    
                    if($_GET["hwfokoman"] == 1)
                    {
                      // Damit dein Browser weiss, wie Gross die Datei ist.
                      header('Content-Length: ' . filesize($sPDFPath."Produktblatt%20HWfoko%20manager%20deutsch.pdf")) OR die(mysql_error());
                      
                      // Die Datei wird als [[filename]] angeboten.
                       header('Content-Disposition: attachment; 
                                    filename="Produktblatt%20HWfoko%20manager%20deutsch.pdf"') OR die(mysql_error()); 
                    // Sourcefile einlesen und ausgeben, durch die setzung von Content-Disposition
                    // wird die Datei nicht angezeigt, sondern als Download angeboten.
                    
                    readfile($sPDFPath."Produktblatt%20HWfoko%20manager%20deutsch.pdf") OR die(mysql_error());
                    }
                    ?> 
                    <body>
                    </body>
                    </html>

                    Kommentar


                    • #11
                      PHP-Code:
                      header('Content-Type: application/octet-stream') OR die(mysql_error()); 
                      Völlig sinnlos, oder wo siehst du eine Interaktion mit der DB ? Du scheinst es wirklich mit der MySql DB zu haben
                      Wieso übergibst du Dateisystemfunktionen URL encodede Strings ? Normale Strings würden es auch, vielleicht sogar besser, tun.
                      Hast du endlich dein error_reporting() voll aufgedreht ?
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        wenn du mir noch sagst wie das geht? Hab das noch nie genutzt.

                        Kommentar


                        • #13
                          wenn du mir noch sagst wie das geht? Hab das noch nie genutzt.
                          Lies die ver... Regeln
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Wenn es dir zu blöd ist mir zu helfen dann lass es und werd nciht ausfallend. Ich kann auch nichts dafür das ich von der Materie noch keine Ahnung habe. Darum bitte ich hier auch um Hilfe.

                            Warning: Cannot modify header information - headers already sent by (output started at /homepages/20/d212079107/htdocs/testhwsoft/scripte/checkuser.php:7) in /homepages/20/d212079107/htdocs/testhwsoft/scripte/download.php on line 9

                            Warning: filesize() [function.filesize]: Stat failed for ../Produktblätter/Produktblatt%20HWfoko%20manager%20deutsch.pdf (errno=2 - No such file or directory) in /homepages/20/d212079107/htdocs/testhwsoft/scripte/download.php on line 14

                            Warning: Cannot modify header information - headers already sent by (output started at /homepages/20/d212079107/htdocs/testhwsoft/scripte/checkuser.php:7) in /homepages/20/d212079107/htdocs/testhwsoft/scripte/download.php on line 14

                            Warning: Cannot modify header information - headers already sent by (output started at /homepages/20/d212079107/htdocs/testhwsoft/scripte/checkuser.php:7) in /homepages/20/d212079107/htdocs/testhwsoft/scripte/download.php on line 18

                            Warning: readfile(../Produktblätter/Produktblatt%20HWfoko%20manager%20deutsch.pdf) [function.readfile]: failed to open stream: No such file or directory in /homepages/20/d212079107/htdocs/testhwsoft/scripte/download.php on line 22

                            Das sind die Fehler die nun erscheinen.
                            Kann man in der Pfadangabe umlaute verwenden oder muss man die mit &auml; schreiben?

                            Kommentar


                            • #15
                              Deine Fehlermeldungen bestätigen meine Vorausahnung.
                              1. irgendwo in checkuser.php machst du eine Ausgabe --> kein header() kann mehr abgesetzt werden --> Zeile suchen und Ausgabe unterdrücken
                              2. Die Pfad/Dateiangaben sind so scheisse. Mach mal bevor du den Namen an Fkt übergibst ein url_decode($deinString) und übergib diesen String an deine File Funktionen
                              Wenn es dir zu blöd ist mir zu helfen dann lass es und werd nciht ausfallend. Ich kann auch nichts dafür das ich von der Materie noch keine Ahnung habe
                              Es ist mir nicht zu blöd dir zu helfen, aber wir haben hier im Board genau für solch "komische" Fälle die Regeln, die die ersten Schritte zum Debugging erklären. Ohne zu wissen ob es Fehler gibt oder nicht ist die Hilfe wie ein Fischen-im-Trüben.
                              Hättest du die Regeln gelesen, dann hättest du das error_reporting() schon lange gesetzt und hättest uns die Fehlermeldungen präsentiert. DA hätten wir schhon konkreter weiterhelfen können
                              Kann man in der Pfadangabe umlaute verwenden oder muss man die mit ä schreiben?
                              Ein Widerspruch innerhalb weniger Zeichen Ja du kannst Umlaute verwenden solange die Dateien auch so gespeichert sind. Der Pfad und der Name müssen genau gleich sein wie auf dem Dateisystem

                              Gruss

                              tobi

                              p.s. bitte brich in allen deinen Postings den Code so um, dass man nicht nach rechts scrollen muss
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X