2017-06-30 13 views
0

私のウェブサイトの配列に入力されたデータからCSV書き出しをしようとしています。私はthis questionを使って私を助けていました。 CSV内にあるはずのデータがWebサイトに表示されますが、ファイルにはエクスポートされません。これは私が質問から取ったコードです:fputcsv()を使用してCSVにエクスポート

 header("Content-Type: text/csv;charset=utf-8"); 
     header("Content-Disposition: attachment;filename=\"$filename\""); 
     header("Pragma: no-cache"); 
     header("Expires: 0"); 

     $fp= fopen('php://output', 'w'); 

     foreach ($data as $fields){ 
      fputcsv($fp, $fields); 
     } 
     fclose($fp); 
     exit(); 

私は正確にヘッダ()関数が何をしているかを理解しません。これをファイルにダウンロードするにはどのようにすればよいですか?

それは私の配列がこのフォーマットである場合に役立ちます:

$data = array(dataset1(array, of, data), dataset2(array, of, data), dataset#(array, of, data)); 

EDIT:私の$ data配列には、セッションvaribleにあり、そこに私が(にsession_startを持っていたので、それはダウンロードを波平理由があった)といくつかので含みトップ。ダウンロードする代わりに画面にエコーが表示されますが、これを削除すると、エクスポートするデータがないためにダウンロードされます。誰にでもこれに対する解決策がありますか?

+1

文字セットUTF-8を使用してファイルをCSVファイルとして宣言し、それに応じてファイルに名前を付けます。これは優れたチュートリアルです。 ---> http://code.stephenmorley.org/php/creating-downloadable-csv-files/ – clearshot66

+1

HTTPヘッダー「Content-Disposition:attachment;」を送信することによって出力を表示すべきではなく$ filenameで指定した名前のファイルとしてダウンロードするようにブラウザに指示します。 実際にこのコードは、ファイルのダウンロードを引き起こすべきです(SHOULD)。 – masterfloda

答えて

0

header()関数は、ブラウザにHTTPヘッダーをそれぞれの値で送信しています。 次に、CSVデータを出力ストリームに送信します。この出力ストリームでは、ヘッダーのためにブラウザがダウンロード可能なファイルとして解釈します。

関連する問題