0

フォーム データを csv 形式に変換する php ファイルがあり、ユーザーのローカル ダウンロード フォルダーに自動的にダウンロードされます。

$time = time();
$filename = 'exceldownloads/myreport_'.$time.'.csv';
$file = fopen($filename,'w');
fputcsv($file,$rowexcel);

上記のコードは正常に機能し、サーバーの指定されたフォルダーに csv ファイルを保存します。しかし、私の要件は、ローカル フォルダーにダウンロードすることです。上記の問題に対する多くの解決策を見てきましたが、ローカルの宛先フォルダーがわかっている場合にのみ機能します。ただし、私の要件は、エンドユーザーのローカルダウンロードのフォルダー (ダウンロード場所を知らない) にダウンロードできるようにすることです。とにかく、宛先パスを特に言及せずにエンドユーザーシステムにダウンロードする方法はありますか?

4

1 に答える 1

2

Web ページの出力を添付ファイルとしてエクスポートできます。これは、ダウンロードとしてユーザーに表示されます。これを行うには、ユーザーに出力を行う直前に適切なヘッダーを出力します。

以下は、foo.csv という名前の CSV ファイルのダウンロードを作成する例です。

header("Content-type: text/csv");
header("Content-Disposition: attachment;Filename=foo.csv");

ヘッダーを出力したら、ファイルのすべてのデータをページ コンテンツに出力するだけです。

*編集: *要求された作業スニペットは次のとおりです。

header("Content-type: text/csv");
header("Content-Disposition: attachment;Filename=foo.csv");
echo implode(";", $rowexcel) . "\r\n";  // you should expand this accordingly

または、コードに基づく別のスニペットを次に示します。

$filename = 'myreport'.time().'.csv';
$f = fopen($filename,'w');
fputcsv($f,$rowexcel);
header('Content-type: application/csv');
header('Content-Disposition: attachment;filename="'.$filename.'"');
readfile($filename);

ダウンロードが得られない場合は、header() 呼び出しの前に何も出力しないようにしてください。また、PHP ファイルの先頭に UTF8 BOM バイトが含まれていないことを確認してください。これらは出力で誤って解釈される可能性があります。

于 2013-10-30T17:29:20.310 に答える