2010-12-06 5 views
36

Update # 1eine Textdatei zum Download zur on-the-fly

Was unten bekannt gegeben wurde, ist genau das Richtige für sie ausgeben, die Datei zu bekommen. Was es jedoch tut, ist die Ausgabe der Zeichenkettendaten gefolgt von dem Rest des Formulars HTML. Gibt es eine Möglichkeit zu stoppen, was in die Datei und was gerade in den Browser angezeigt wird.

Update # 2

abgegeben Just exit() und alles funktioniert gut. Vielen Dank!

EOB

Hallo,

Ich habe mich um und ein paar Dinge ähnlich, aber nicht ganz vollständig den Griff bekomme gesehen, was ich tun muß, um die Aufgabe in vollem Umfang zu erreichen.

Im Moment habe ich ein Formular, dass ein Benutzer einige Details liefert. Beim Senden wird es an sich selbst zurückgesendet und die POST-Variablen werden verarbeitet. Ich habe ein vorgefertigtes HTML-Web-Template für die Informationen, in denen es gut funktioniert und einfach nur einen str_replace macht.

Was ich jetzt zu tun versuche, ist Export als Download für den Benutzer in einem Nur-Text-Dokument. Das Endergebnis ist also, dass der Benutzer auf das Formular klickt und dann ein Download-Popup mit der geänderten Webseite als TXT-Datei öffnet.

Soweit ich verstehe, muss ich etwas mit HTTPs Header-Funktionen tun. Was genau, um zu erreichen, was ich will, bin ich nicht sicher. Ich möchte nur, dass die Datei einmal verfügbar ist, aber ich nehme an, dass sie irgendwo für den Benutzer zum Download gespeichert werden muss, der dann manuell aufbereitet werden muss?

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

Antwort

18

Auschecken this SO question's accepted solution. Ersetzen Sie Ihren eigenen Dateinamen für basename($File) und ändern Sie die Dateigröße ($ File) in strlen($your_string). (Sie können mb_strlen nur für den Fall verwenden, die Zeichenfolge Mehrbytezeichen enthält.)

+9

+1, vermeiden Doppelarbeit zu erzeugen und SO auf andere verweisen Fragen wo möglich. –

58

Keine Notwendigkeit, es überall zu speichern. Geben Sie einfach den Inhalt mit dem entsprechenden Inhaltstyp aus.

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

Fügen Sie die Inhaltsdisposition hinzu, wenn Sie eine Download-Aufforderung auslösen möchten.

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

Verwenden Sie den folgenden Code-Dateien auf Fly ..

<? //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; 
?> 
+1

für mich bringt es immer den Quellcode der Website statt, dass der $ Inhalt –

0
<?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; 
?> 
+2

Dies ist das gleiche wie diese andere Antwort http://stackoverflow.com/a/16440501/2743307 – bibi

+0

Ich stieß auf das gleiche Problem wie @eichertc tat . Das Hinzufügen des Suffix "php" zum Eröffnungs-Tag löst das Problem. –

+0

Ich überprüfte meine Apache-Protokolle und das war das Problem, und dieser Beitrag war sehr nützlich: http://StackOverflow.com/Questions/9707693/warning-cannot-modify-header-information-headers-Autor-sent-by-error.Ich kam hierher, um meine Frage zu löschen, weil sie gelöst wurde, aber sah, dass sie bereits gelöscht wurde. –

Verwandte Themen