readfile() PHP Darstellungsschwierigkeiten

  • Hallo

    Wie schon im Titel:
    Ich benutze readfile() umd mit PHP eine Datei downloaden zu lassen.
    Explizit: txt-Dateien.

    In der Datei sind Sonderzeichen, sowie auch Umbrüche drin.
    Wenn ich nun per readfile() das File lese und dann ausgebe und öffne, werden die Umbrüche einfach nicht angezeigt, reps. es werden doofe Quadrate anstattdessen angezeigt.

    Gäbe es vielleicht eine andere Möglichkeit in Kombination mit:

    PHP
    header('Content-Disposition: attachment; filename="'.$_GET[dl].'"');
            header("Content-Type: application/force-download");
            header("Content-Type: application/octet-stream");
            header("Content-Type: application/download");
            header("Content-Description: File Transfer");
            header("Content-Length: ".filesize($sr.$_GET[dl]));
  • Meine gesamte Funktion:

    PHP
    if(isset($_GET[dl])) {
            header('Content-Disposition: attachment; filename="'.$_GET[dl].'"');
            header("Content-Type: application/force-download");
            header("Content-Type: application/octet-stream");
            header("Content-Type: application/download");
            header("Content-Description: File Transfer");
            header("Content-Length: ".filesize($sr.$_GET[dl])); 
            readfile($sr.$_GET[dl]);
            die();
                }

    Aber fopen() heisst doch net, dass der Inhalt der Datei zum Download ausgelesen wird?

  • Immer bei Umbrüchen sind die Quadrate aber die Sonderzeichen sind überraschenderweise korrekt dargestellt.

  • Wies gar nicht was du hast, bei mir gehts das einwandfrei....

    Gib mal Link


    mfg

  • ALso beim runterladen ist alles okay, beim deaktivierten download nicht....

    Wie zeigst du die datei dann an? Code?

    mfg

  • Wenn ich bei mir auf das File klicke und ich den Download aktiviert habe und das Fenster für Öffnen oder Speichern kommt und ich dann öffne, kommen die Quadrate.
    Beim Anzeigen kommen bei mir einfach diese doofen fehlerhaften Zeichen ganz am Anfang, aber das behebe ich schon noch.

    Die Datei wird so angezeigt:

    PHP
    <?php
    
        if(isset($_GET['txt']) and !in_array($_GET['txt'], $array)) {
            $content = file_get_contents($sdir.$_GET['txt']);
            echo "<div class=\"txt\">".nl2br(htmlentities($content))."</div>";
            die("</div></div></body></html>");
                }
    
    ?>
  • warum zeigst du die Datei nicht per header text/plain an ist viel einfacher und gültig!

    PHP
    header("Content-Type: text/plain");

    Zudem muß ich noch sagen dass du die Datei in ein Archiv packen solltest

    es ist ungewöhnlich das eine *.txt Datei direkt ausgespuckt wird daher siehst
    du auch die default platzhalter weil dein System/Programm die Steuerzeichen nicht kennt !

    Der Content-Type: octet/stream ist für solche erzwungene Downloads nicht gedacht !

    Einmal editiert, zuletzt von webcoolcity (10. Juni 2009 um 22:17)

  • warum zeigst du die Datei nicht per header text/plain an ist viel einfacher und gültig!

    PHP
    header("Content-Type: text/plain");

    Zudem muß ich noch sagen dass du die Datei in ein Archiv packen solltest

    es ist ungewöhnlich das eine *.txt Datei direkt ausgespuckt wird daher siehst
    du auch die default platzhalter weil dein System/Programm die Steuerzeichen nicht kennt !

    Der Content-Type: octet/stream ist für solche erzwungene Downloads nicht gedacht !


    Mit der Downloadfunktion wollte ich eigentlich einfach immer den Download erzwingen können und wenn ich für TXT Dokumente text/plain nehme, dann stimmt es für andere Dateitypen wieder nicht oder wie meinst du das?
    Könntest du meinen PHP Code (Downloadcode) schnell anpassen, wie du meinst, es ginge?
    Danke..

    Ich wollte einfach für alle Dateitypen was Universelles haben.

  • Ich würde das Eventuell so machen:

    aber wie schon gesagt, pack die Dateien in ein Archiv, vorzugsweise ein Format das auch Linux Anwender öffnen können!

    P.S. @firefox5.0 Ich hoffe die Privatnachricht ist angekommen die ich dir geschickt habe, wenn nicht dann sag bitte bescheid.

    5 Mal editiert, zuletzt von webcoolcity (11. Juni 2009 um 18:12)