覚書 IEもろもろ対応
[2009.10.06追記]おっきいファイルの出力対応してみた
‘※動作保証しません。’
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| /** * CSV出力アクション */ public function outputcsvAction() { // レンダリングを停止する $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->disableLayout(); // ファイル名の設定 $file_name = 'hogehoge.csv'; // IE対応含め、ヘッダーの設定 $this->getResponse()->setHeader("Cache-Control", "public", true); $this->getResponse()->setHeader("Pragma", "", true); $this->getResponse()->setHeader("Content-type","text/csv"); $this->getResponse()->setHeader("Content-Disposition","attachment; filename=$file_name"); // ヘッダーの送信 if ($this->getResponse()->canSendHeaders()) { $this->getResponse()->sendHeaders(); $this->getResponse()->clearAllHeaders(); } // ダミーデータ $rows = array( array('column1', 'column2', 'column3', 'column4') , array('column1', 'column2', 'column3', 'column4') , array('column1', 'column2', 'column3', 'column4') ); // CSVの出力 echo mb_convert_encoding('column1,column2,column3,column4', 'SJIS-win', 'UTF-8'); foreach ($rows as $row) { // 出力データの生成 $output = '"' . implode('","', $row) . '"' . "\r\n";; $output = mb_convert_encoding($output, 'SJIS-win', 'UTF-8'); // フラーーーーーーーーーーーーシュ!!! flush(); ob_flush(); echo $output; } }
|