-1

検索結果から、ユーザーがダウンロードして自分のコンピューターに保存できるファイルを生成する方法を探しています。既にファイルを生成できますが、ユーザーに保存場所を求めるのではなく、自動的にサーバーに保存されます。

検索フォームで、ユーザーはチェックボックスを選択して出力の CSV ファイルを生成できます (結果ページにダウンロード ボタンを表示したいのですが、その方法がわかりませんでした): https://www. evernote.com/shard/s68/sh/54e95567-d91e-4649-a5c1-35b5f8929c13/a4bc4fed2a2c7f7801099f6d5711c49e

次に、次のページで結果がページに表示され、適切なファイルも生成されます。

結果ページにファイルを生成するコード:

if($print_flag == 1) {
  $filename = "exportfile" . date("Y-m-d_H_m_s") . ".csv";
  $handle = fopen($filename, 'w+');
  fputcsv($handle, array($column1,$column2));
  fclose($handle);
}

$print_flag は、ユーザーが前のフォームで CSV チェックボックスをオンにした場合に設定されます。

これにより、ユーザーがローカルに保存するのではなく、サーバーに保存されるファイルが作成されます。

この以前の質問PHP がファイルをユーザーのコンピューターに保存するのを見ましたが、それらのヘッダーを追加する方法や、それが正しいアプローチであるかどうかを理解できませんでした。

ありがとう!

4

1 に答える 1

0

このため、ほとんどのブラウザーは MIME タイプのヘッダーを使用します。

一般に、ヘッダーを設定する呼び出しはできるだけ早くする必要があります。これらはすべての echo ステートメントの前に配置することが不可欠<?php ?>であり、それらの前に配置されるブロックの外側には何もありません。

できるだけ早い段階で、コードに 2 行を追加する必要があります。

header('Content-type: text/csv');

これは、これが csv ファイルであることをブラウザーに伝え、ブラウザーの名前を付けて保存ダイアログでフィルター処理されるファイルの種類を設定します。

header("Content-disposition: attachment;filename=$name.csv");

ファイルを保存するようにブラウザに指示します。ブラウザによっては、完全な名前を付けて保存ダイアログをポップアップ表示するか、より一般的には、ファイルをデフォルトのダウンロード フォルダに保存することができます$name.csv。二重引用符を使用すると、設定するだけでファイル名を含めることができます$name

于 2013-08-10T12:58:21.987 に答える