web-dev-qa-db-ja.com

オンザフライでダウンロードするテキストファイルを作成する

更新#1

以下に投稿されているのは、ファイルを出力するためのスポットです。ただし、文字列データに続いて残りのフォームHTMLを出力しています。ファイルに挿入されるものとブラウザに表示されるものを停止する方法はありますか。

更新#2

exit()を追加しただけで、すべて正常に動作します。ありがとう!

[〜#〜] eou [〜#〜]

こんにちは、

私は周りを見回して、似たようなことをいくつか見てきましたが、タスクを完全に達成するために必要なことを完全には把握していません。

現時点では、ユーザーがいくつかの詳細を提供するフォームがあります。送信時に、それはそれ自身にポストバックされ、POST変数が処理されます。str_replaceを行うだけでうまく機能する情報を配置するための、事前に作成されたHTML Webテンプレートがあります。

私が今やろうとしているのは、それをダウンロードしてプレーンテキストドキュメントでユーザーにエクスポートすることです。そのため、ユーザーがフォームの送信をクリックすると、最終的な結果として、変更されたWebページが.txtファイルとして表示されるダウンロードポップアップが開きます。

私の知る限り、HTTPsヘッダー機能を使用して何かをする必要があります。私が望むものを達成するために正確に何が私にはわからない。ファイルを1回だけ利用できるようにしたいのですが、ユーザーがダウンロードするには最初にどこかに保存する必要があると思います。

どんな助けやポイントも素晴らしいでしょう!ありがとう。

46
lethalMango

this SO質問の受け入れられた解決策 を確認してください。basename($File)を独自のファイル名に置き換え、filesize($ File)をstrlen($your_string)に変更します。 (文字列にマルチバイト文字が含まれる場合に備えて、mb_strlenを使用できます。)

19
simshaun

どこにでも保管する必要はありません。適切なコンテンツタイプでコンテンツを出力するだけです。

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

ダウンロードプロンプトをトリガーする場合は、content-dispositionを追加します。

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

以下のコードを使用して、オンザフライでファイルを生成します。

<? //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;
 ?>
28
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;
?>
1
Chui Hui Chiu