16

Phpを介してサーバーにテキストファイルを書き込み、クライアントにそのファイルをダウンロードさせたいです。

どうすればいいですか?

基本的に、クライアントはサーバーからファイルをダウンロードできる必要があります。

4

5 に答える 5

17

これは、ユーザーにファイルの実際のURLを見せたくない場合に、これを行うための最良の方法です。

<?php
  $filename="download.txt";
  header("Content-disposition: attachment;filename=$filename");
  readfile($filename);
?>

さらに、mod_accessを使用してファイルを保護することもできます。

于 2009-04-10T09:21:18.097 に答える
14

すでに投稿されているデータに加えて、試してみたいヘッダーがあります。

それがどのように処理されることを意味するかについての単なる提案であり、ユーザーエージェントはそれを無視することを選択でき、方法がわかっている場合は単にウィンドウにファイルを表示することができます:

<?php

 header('Content-Type: text/plain');         # its a text file
 header('Content-Disposition: attachment');  # hit to trigger external mechanisms instead of inbuilt

Content-Disposition ヘッダーの詳細については、 Rfc2183を参照してください。

于 2009-04-10T08:37:42.337 に答える
5

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);
?>

これは非常に基本的な例ですが、この種の操作については、次の場所で参照できます。

PHP fopen

于 2009-04-10T08:28:49.783 に答える
3

コンテンツ タイプを application/octet-stream に設定すると、ブラウザは常にファイルをダウンロードとして提供し、ファイルのタイプに関係なく、内部で表示しようとはしません。

<?php
  filename="download.txt";
  header("Content-type: application/octet-stream");
  header("Content-disposition: attachment;filename=$filename");

  // output file content here
?>
于 2009-04-10T08:43:06.817 に答える
2

サイトにhttp://example.com/textfile.phpへのリンクを投稿するだけです

そして、その PHP ファイルに次のコードを入れます。

<?php
header('Content-Type: text/plain');
print "The output text";
?>

そうすれば、(データベースから) 動的なコンテンツを作成できます...これが探しているものでない場合は、Google で「Content-Type」を検索してみてください。

于 2009-04-10T08:31:34.567 に答える