CSV MIMEタイプの使用方法


125

私が取り組んでいる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)でした。

私が知らない癖がありますか?

回答:


219

次のようにして、ブラウザに「名前を付けて保存」ダイアログを強制的に開くように試みることができます。

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

ほとんどの主要なブラウザで動作するはずです。


12

言語やフレームワークは指定していませんが、ファイルのダウンロードには次のヘッダーが使用されています。

"Content-Disposition: attachment; filename=abc.csv"

5

Internet Explorerでは、ダウンロードが適切に機能するように、Pragma:パブリックヘッダーも指定する必要があります。

header('Pragma: public');

ちょうど私の2セント..


5
プラグマ:publicは、Internet Explorerにはまったく意味がありません。(問題のコンポーネントに取り組み、ソースをgrepしました)。
EricLaw 2013

おそらくこれの実際のユーティリティは、既存のプラグマを置き換えることです:キャッシュなしヘッダー?
Doin

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"');

2
「オクテットストリーム」は「オクテットストリーム」であることを意味します
EricLaw 2013

2
これにより、一部のブラウザーで警告が発生する可能性があります。リソースはドキュメントとして解釈されますが、MIMEタイプapplication / octet-streamで転送されます
mikeschuld
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.