web-dev-qa-db-de.com

Erstellen Sie eine Textdatei zum schnellen Herunterladen

Update Nr. 1

Was unten veröffentlicht wurde, ist genau das Richtige für die Ausgabe der Datei. Was es tut, ist jedoch die Ausgabe der String-Daten, gefolgt vom Rest der Formular-HTML. Gibt es eine Möglichkeit, zu stoppen, was in der Datei abgelegt wird und was dem Browser gerade angezeigt wird.

Update Nr. 2

Einfach nur exit() hinzugefügt und alles funktioniert gut. Vielen Dank!

EOU

Hallo,

Ich habe mich umgesehen und ein paar ähnliche Dinge gesehen, aber nicht ganz verstanden, was ich tun muss, um die Aufgabe vollständig zu erfüllen.

Im Moment habe ich ein Formular, das ein Benutzer mit Details versorgt. Beim Absenden wird es an sich selbst zurückgesendet und die Variablen POST werden verarbeitet. Ich habe ein vorgefertigtes HTML-Web-Template, in das die Informationen eingefügt werden können, die gut funktionieren und einfach nur einen str_replace ausführen.

Was ich jetzt versuche, ist das Exportieren als Download für den Benutzer in einem Klartextdokument. Das Endergebnis besteht darin, dass der Benutzer auf das Formular klickt, und dann wird ein Download-Popup mit der geänderten Webseite als TXT-Datei geöffnet.

Soweit ich weiß, muss ich etwas mit der HTTP-Header-Funktionalität tun. Was genau, um das zu erreichen, was ich will, bin ich mir nicht sicher. Ich möchte, dass die Datei nur einmal verfügbar ist, aber ich gehe davon aus, dass sie anfänglich irgendwo gespeichert werden muss, damit der Benutzer sie herunterladen kann. Danach müssen sie manuell bereinigt werden.

Jede Hilfe oder Punkte wäre toll! Vielen Dank.

41
lethalMango

Check out Diese SO Frage ist akzeptierte Lösung . Ersetzen Sie Ihren eigenen Dateinamen durch basename($File) und ändern Sie die Dateigröße ($ File) in strlen($your_string). (Vielleicht möchten Sie mb_strlen nur für den Fall verwenden, dass die Zeichenfolge Multibyte-Zeichen enthält.)

19
simshaun

Sie müssen es nicht überall aufbewahren. Geben Sie einfach den Inhalt mit dem entsprechenden Inhaltstyp aus.

<?php
    header('Content-type: text/plain');
?>Hello, world.

Fügen Sie Content-Disposition hinzu, wenn Sie eine Download-Eingabeaufforderung auslösen möchten.

header('Content-Disposition: attachment; filename="default-filename.txt"');
64
Quentin

Verwenden Sie den folgenden Code, um Dateien on fly zu generieren. 

<? //Generate text file on the fly

   header("Content-type: text/plain");
   header("Content-Disposition: attachment; filename=savethis.txt");

   // do your Db stuff here to get the content into $content
   print "This is some text...\n";
   print $content;
 ?>
26
Dhiral Pandya
<?php

    header('Content-type: text/plain');
    header('Content-Disposition: attachment;
            filename="<name for the created file>"');
    /*
    assign file content to a PHP Variable $content
    */
    echo $content;
?>
0
Chui Hui Chiu