PHPを介してサーバーにテキストファイルを書き込み、クライアントにそのファイルをダウンロードしてもらいたい。
どうすればいいですか?
基本的に、クライアントはサーバーからファイルをダウンロードできる必要があります。
これは、ユーザーにファイルの実際のURLを見せたくない場合に最適な方法です。
<?php
$filename="download.txt";
header("Content-disposition: attachment;filename=$filename");
readfile($filename);
?>
さらに、mod_accessを使用してファイルを保護することもできます。
すでに投稿されているデータに加えて、試してみたいヘッダーがあります。
それがどのように処理されるかについての唯一の提案であり、ユーザーエージェントはそれを無視することを選択でき、ファイルがあればウィンドウに表示するだけです。方法を知っています:
<?php
header('Content-Type: text/plain'); # its a text file
header('Content-Disposition: attachment'); # hit to trigger external mechanisms instead of inbuilt
Content-Dispositionヘッダーの詳細については、 Rfc218 を参照してください。
PHPには、ファイルに書き込むための非常に単純なCのような関数がいくつかあります。簡単な例を次に示します。
<?php
// first parameter is the filename
//second parameter is the modifier: r=read, w=write, a=append
$handle = fopen("logs/thisFile.txt", "w");
$myContent = "This is my awesome string!";
// actually write the file contents
fwrite($handle, $myContent);
// close the file pointer
fclose($handle);
?>
これは非常に基本的な例ですが、この種の操作への参照はここにあります。
サイトにリンクを投稿するだけです http://example.com/textfile.php
そして、そのPHPファイルに次のコードを入れます:
<?php
header('Content-Type: text/plain');
print "The output text";
?>
そうすれば、(データベースから)動的なコンテンツを作成できます...これが探しているものでない場合は、Googleで「Content-Type」を選択してみてください。
コンテンツタイプをapplication/octet-streamに設定すると、ブラウザは常にファイルをダウンロードとして提供し、ファイルのタイプに関係なく、内部に表示しようとはしません。
<?php
filename="download.txt";
header("Content-type: application/octet-stream");
header("Content-disposition: attachment;filename=$filename");
// output file content here
?>