を経由してファイルをダウンロードするためにPHPを強制私は現在、ユーザーのブラウザでファイルのダウンロードを作成しようとしているが、今のところそれを実現することができませんでした。ブラウザ
私はstackoverflow.com上の他の回答を見てきましたし、これまでの私の問題を解決したものを発見していません。次のように
私のプロセスは、次のとおりです。
私はヘッダーを設定、その後、ファイル名やファイルパスを作成します。
$date = new DateTime();
$currentDateTime = $date->format("Y-m-d H:i:s");
$filename = "{$name}_{$currentDateTime}.csv";
$filepath = $rootfull . "/{$filename}";
// Set headers
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="' . $filepath . '"');
header('Content-Length: ' . filesize($filepath));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: no-cache');
私は、ファイルを作成し、それへの書き込みを開始:
// Write header
fputcsv($output, $header);
fputcsv($output, array()); // Empty line
// Write column names
$column_headers = array_keys(array_flip($columns));
foreach ($data as $row)
{
fputcsv($output, $row);
}
echo readfile($filepath);
die();
ファイルは生成され、指定された場所に書き込まれます(この場合は/var/www/<project>/<filename>.csv
)。何も起こっていないことをユーザに知らせることなく、ダウンロードダイアログは表示されません。誰もが自分のコードや私のプロセスで問題を発見できる場合
、それを指摘し、好ましくは、それを行うためのより良い/別の方法を提案してください、すべての任意のヘルプは、この時点では大歓迎です。
あなたは*右のヘッダを送信する前に、ファイル*を作成しますか? – ficuscr
ちょうど 'のReadFile($ file_url);あなたが戻ってユーザーにReadFile関数しようとする直前に、ヘッダを送信する前にファイルを作成する必要はありません@ficuscr'なし 'echo' – rtfm
。 –