Posts tagged csv
CSV ファイルをダウンロードさせるとファイルの先頭に BOM が勝手に付いてしまう
1開発しているシステムで CSV ファイルをダウンロードさせる機能があります。PHP コードは UTF-8 で記述しているのですが、CSV ファイルは Shift-JIS で出力したいので、ダウンロードさせるときに変換をしています。
その機能で急にファイルの先頭に勝手に BOM が付いてしまうというバグが発生しました。
しかも自分のローカルの開発環境では発生せずに、テスト機だけで起こるという現象でした。
ダウンロードする処理は何も修正していないので、最初は出力するデータに問題があるのかと思い、色々試したみたが出力するデータには関係ないことが分かった。
(続きを読む…)
CakePHP 1.2 の saveAll その1
1CakePHP 1.2 から model に saveAll メソッドが追加されました。
同一モデルへの複数データの一括保存やアソシエーションのモデルのデータの保存が saveAll でできます。
同一モデルへの複数データの保存
$data = array( array('name'=>'tanaka'), array('name'=>'suzuki'), array('name'=>'yamada') ); if ($this->User->saveAll($data)===false) { $this->Session->setFlash('保存に失敗しました'); } else { $this->Session->setFlash('保存しました'); }
ただβバージョンのためか、saveAll の戻り値が成功時には NULL 失敗したときには false が返って来ます。
そのために
If ($this->User->saveAll($data)) {
とやると成功の判定が正しく行えません。
CSV を読み込んでデータをインポートするようなときにいいかもしれません。
追記
このエントリーは CakePHP 1.2.0.6311 beta で検証しています。
IE で CSV がダウンロードできない問題
1OpenPNE の管理画面からメンバー情報を CSV ファイルとしてダウンロードする機能があります。その CSV ダウンロードが IE6 でエラーになってダウンロードできない問題がありました。
原因はマイクロソフトのサイト Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題 に書かれていました。
対処方法として、
webapp/modules/admin/do/csv_member.php を webapp_ext/modules/admin/do/csv_member.php にコピーして
header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=member.csv");
となっているところを下記のように修正します。
header("Pragma: public"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=member.csv");
これでダウンロードができるようになります。
なお、Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題 では現象が発生するブラウザとして
?Microsoft Internet Explorer 5.0
?Microsoft Internet Explorer 6.0
?Microsoft Internet Explorer 6.0 Service Pack 1
と書かれていましたが、 IE6 の SP2 でも同様の現象が発生しました。