作業中のWebアプリケーションで、ユーザーはCSVファイルへのリンクをクリックできます。 MIMEタイプにはヘッダーが設定されていないため、ブラウザはそれをテキストとしてレンダリングします。このファイルを.csvファイルとして送信したいので、ユーザーはcalc、Excel、gnumericなどで直接開くことができます。
header('Content-Type: text/csv');
echo "cell 1, cell 2";
このコードは私のコンピューターでは正常に機能しますが(常にそうではありませんか?)、別のコンピューターでは機能しません。
私のブラウザは、FF 3.0.1(Linux上)のナイトリービルドです。動作しなかったブラウザはIE 7およびFF 3.0(Windows上)
気付いていない癖はありますか?
次のようなことを行うことで、ブラウザに「名前を付けて保存...」ダイアログを強制的に開くことができます。
header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";
これは、ほとんどの主要なブラウザーで機能するはずです。
言語またはフレームワークは指定していませんが、ファイルのダウンロードには次のヘッダーが使用されます。
"Content-Disposition: attachment; filename=abc.csv"
Internet Explorerでは、ダウンロードが適切に機能するために、Pragma:publicヘッダーも指定する必要があります。
header('Pragma: public');
ちょうど私の2セント。
このコードを使用して、csvを含む任意のファイルをエクスポートできます
// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');