Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Downloadscript liest nur Quelltext ein

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Downloadscript liest nur Quelltext ein

    Hallo,

    Ich möchte Datein zum downloaden anbieten. Das Downloadfenster kommt auch aber wenn ich die Datei dann downloade ist nur der Qeulltext der Webseite in der Datei und nicht der eigentliche Inhalt.

    PHP-Code:
    public function makeDownload($file$dir)
        {
            
    $dir str_replace("@""/"$dir);
            
    $dir .= "/";
            if(
    file_exists($dir.$file) && strstr($dir"downloads"))
            {
                
    $filesize filesize($dir.$file);
                
    $type $this->getType($file);
                
    header("Content-Type: $type");
                
    header("Content-Length: $filesize");
                
    //header("Content-type: application/octet-stream");  
                
    header("Content-Disposition: attachment; filename=\"$file\"");
                
    readfile($dir.$file);

            }        
        } 
    Der Pfad zur Datei stimmt auch.

    Ich hoffe mir kann hier einer helfen
    sigpic

  • #2
    mein Code sieht dazu so aus ...

    PHP-Code:
    $Datei="documents/Beispiel.doc";
    if (
    file_exists($Datei)) {
       
    $Dateiname basename($Datei);
       
    $Groesse filesize($Datei);
       
    $file=fopen($Datei,'r');
       
    set_time_limit(0);
       if (
    $file) {
          
    header("Pragma: public");
          
    header("Expires: 0");
          
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
          
    header("Cache-Control: private",false);
          
    header("Content-Type: application/force-download");
          
    header("Content-Type: application/octet-stream");
          
    header("Content-Type: application/download");
          
    header("Content-Disposition: attachment; filename=\"".$Dateiname."\";");
          
    header("Content-Description: File Transfer");
          
    header("Content-Transfer-Encoding: binary");
          
    header('Content-Length: '.$Groesse );
          
    flush();
          while (!
    feof($file)) {
             print(
    fread($file,4096));
             
    flush();
          }
       }
    fclose($file);
    die();

    - damit liefere ich in dem Fall ein Word-Document aus ... klappt aber genauso für CSV und beliebige andere .. nur für PDF müsste ich den Typ ein wenig abwandeln, vermutlich geht es aber auch ohne, wenn das Programm vernünftig installiert ist ...
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

    Kommentar


    • #3
      Ich habe Dein Script mal an meins angepasst.

      Folgendes passiert: Wenn ich jetzt z.b eine Textdatei die 4 Byte groß ist Downloaden will stehen in dieser die ersten 4 Byte aus dem Quelltext. :/
      sigpic

      Kommentar


      • #4
        tja - offensichtlich liest du die falsche Datei ...

        bei mir wird exakt die Datei gelesen, die ich brauche ..
        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

        Kommentar


        • #5
          Sorry, aber von welchem Quelltext ist hier die Rede? Irgendwie verstehe ich das Problem nicht.
          [URL]http://hallophp.de[/URL]

          Kommentar


          • #6
            Zitat von PiXeL1337 Beitrag anzeigen
            ... aber wenn ich die Datei dann downloade ist nur der Qeulltext der Webseite in der Datei und nicht der eigentliche Inhalt.
            Dann musst du aus dem Quelltext den eigentlichen Inhalt erzeugen. Wie das geht hängt von der PRogrammiersprache ab, in der der Quelltext geschrieben ist.
            Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

            Kommentar


            • #7
              Aber selbst wenn ich die Datei "per Hand" auswähle und darauf achte das der Pfad korrekt ist funktioniert es nicht.

              Mit dem Quelltext meinete ich in diesem Fall das was von dem Browser interpretiert wird.

              rechtsklick -> Quelltext anzeigen
              sigpic

              Kommentar


              • #8
                was willst du überhaupt zum Download anbieten ? du kannst das erzeugte HTML deiner PHP-Anwendung nicht direkt zum download anbieten mE ... dafür gibts ja im Browser den Quelltext ....

                für mich sieht es immer noch so aus, dass dein readfile($dir.$file); die falsche Datei liest ..
                "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                Kommentar


                • #9
                  Ich will ja NICHT den Quelltext anbieten sondern text, doc oder pdf.

                  Das problem ist das in den Datein nicht der eigentliche inhalt steht sondern das HTML der Seite.
                  sigpic

                  Kommentar


                  • #10
                    ja dann passt der Pfad nicht .. hast du es mal mit meiner Lösung über fopen ( ) .. versucht ?

                    und lass dir vorher den $dir.$file nochmal ausgeben ..

                    UND PRÜF BITTE , ob dein CODE auch in den THEN-Zweig deiner If Prüfung reingeht (Echo "Hier"; direkt nach if .. { reicht ja )
                    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                    Kommentar


                    • #11
                      ja deine lösung habe ich probiert ( #3 ).

                      in $dir.$file steht sowas wie: ./downloads/ordner1//test1.txt
                      sigpic

                      Kommentar


                      • #12
                        und geht er in den Then-Zweig ? ... liegt dort tatsächlich auch die Datei ?

                        der Doppelslash dort stört ..... bearbeite mal deine string-anweisungen für $dir ...

                        $dir .='/' ; <-- das nur ausführen, wenn nicht schon ein slash dran hängt ...

                        also
                        PHP-Code:
                        if (substr($dir,strlen($dir)-1)!='/')
                           
                        $dir.='/'
                        oder so ähnlich
                        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                        Kommentar


                        • #13
                          Ja geht er und da liegt auch die Datei.

                          Hab den 2ten slash gerade mal entfernt.
                          sigpic

                          Kommentar


                          • #14
                            wie sieht denn mittlerweile dein Code aus - oder klappt es inzwischen "mit'm Nachbar'n"
                            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                            Kommentar


                            • #15
                              Da hat sich noch nicht viel geändert^^
                              PHP-Code:
                              public function makeDownload($file$dir)
                                  {
                                      
                              $dir str_replace("@""/"$dir);
                                      if (
                              substr($dir,strlen($dir)-1) != '/')
                                      {
                                          
                              $dir .= "/";
                                      }
                                      
                                      if (
                              file_exists($dir.$file))
                                       {
                                          if(
                              file_exists($dir.$file) && strstr($dir"downloads"))
                                          {
                                              echo 
                              $dir.$file;
                                              
                              $filesize filesize($dir.$file);
                                              
                              $type $this->getType($file);
                                              
                              //header("Content-Type: $type");
                                              
                              header("Content-Length: $filesize");        
                                              
                              header("Content-Type: application/force-download");
                                              
                              header("Content-Type: application/octet-stream");
                                              
                              header("Content-Type: application/download");   
                                              
                              header("Content-Disposition: attachment; filename=\"$file\"");
                                              
                              readfile($dir.$file);
                                  
                                          }
                                      }        
                                  } 
                              Mir ist aufgefallen das wenn ich readfile auskommentiere der Download (mit falschem inahlt) trozdem kommt.
                              sigpic

                              Kommentar

                              Lädt...
                              X