2010-12-06 12 views
36

更新#1はオンザフライ

ダウンロード用のテキストファイルを作成して何下記掲載されていることは、出力にファイルを、それを取得するためのスポットです。それがやっていることは、残りのフォームHTMLの後に文字列データを出力することです。ファイルに格納されているものとブラウザに表示されているものを停止する方法はありますか?

アップデート#2

ちょうどexit()を追加し、すべてが正常に動作します。ありがとう!

EOU

こんにちは、

私の周り見て、類似したが、かなり完全に、私は完全にタスクを達成するために何をする必要があるかの把握を持っていないいくつかのことを見てきました。

現時点では、ユーザーが詳細を入力するフォームがあります。送信時に、それ自体にポストされ、POST変数が処理されます。私は情報が配置されていて、str_replaceをやっているだけでうまく動作しています。

ここで私がしようとしているのは、プレーンテキストドキュメントでユーザーにダウンロードすることです。最終的に、ユーザーはフォーム上でサブミットをクリックし、変更されたWebページを.txtファイルとして開いたダウンロードポップアップが表示されます。

私が理解する限り、私はHTTPsヘッダ機能を使って何かをする必要があります。私が欲しいものを達成するためには、正確にはどういうことか分かりません。私はそのファイルを一度しか利用できないようにしたいと思っていますが、ユーザーがダウンロードするためにどこかに最初に保存しなければならないと想定しています。

すべてのヘルプやポイントは、素晴らしいことです!ありがとう。

答えて

18

チェックアウトthis SO question's accepted solutionbasename($File)のファイル名に置き換えて、filesize($ File)をstrlen($your_string)に変更してください。その場でファイルを生成するコードの下に(あなたが文字列にマルチバイト文字が含まれているだけの場合にmb_strlenを使用することをお勧めします。)

+9

+1、重複を避け、SO他を参照してください。可能であれば質問します。 –

58

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

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

ダウンロードプロンプトをトリガーする場合は、コンテンツの配置を追加します。

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

使用..

<? //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

私のために、それは常に代わりにサイトのソースコードコードをもたらします$ content –

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

これはこの他の答えと同じですhttp://stackoverflow.com/a/16440501/2743307 – bibi

+0

@eichertcと同じ問題が発生しました。 "php"接尾辞を開始タグに追加すると、問題が解決されます。 –

+0

私はApacheのログを確認しましたが、これは問題で、この投稿は非常に便利でした:http://stackoverflow.com/questions/9707693/warning-cannot-modify-header-information-headers-already-sent-by-error私は解決されたが、既に削除されているのを見て私の質問を削除するためにここに来た。 –

関連する問題