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

  • #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 ...

    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. :/

      Kommentar


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

        bei mir wird exakt die Datei gelesen, die ich brauche ..

        Kommentar


        • #5
          Sorry, aber von welchem Quelltext ist hier die Rede? Irgendwie verstehe ich das Problem nicht.

          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.

            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

              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 ..

                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.

                  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 )

                    Kommentar


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

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

                      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

                        Kommentar


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

                          Hab den 2ten slash gerade mal entfernt.

                          Kommentar


                          • #14
                            wie sieht denn mittlerweile dein Code aus - oder klappt es inzwischen "mit'm Nachbar'n"

                            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.

                              Kommentar

                              Lädt...
                              X