こんにちは
WEBエンジニアのyuchiです。
前々回の記事に引き続き、開発でfuelphpからCSVファイルをアップロードして読み込みしないといけなかったので、 その時調べた方法を書きたいと思います。
まずはCSVファイルをアップロードします。
// 初期設定 $config = array( 'path' => dirname(DOCROOT).'/uploads/', 'randomize' => true, 'ext_whitelist' => array('csv'), ); // アップロード基本プロセス実行 Upload::process($config); // 検証 if (Upload::is_valid()) { // 設定を元に保存 Upload::save(); // 情報をデータベースに保存する場合 $result = Model_Uploads::deliv_add(Upload::get_files()); }
configでアップロードする場所をpathに指定し、保存するファイルの拡張しを設定し保存します。 randomizeをtrueにすると保存されるファイル名がランダムにつけられます。
次にアップロードしたファイルからcsvの読み込みを行います。
foreach ($files as $file) { $data = file_get_contents($file['saved_to'].$file['saved_as']); $data = mb_convert_encoding($data, 'UTF-8', 'SJIS'); $data = Format::forge($data, 'csv')->to_array(); }
csvファイルの文字コードが分からないため、文字化け防止としてmb_convert_encodingで変換します。 例としまして、ここではSJISからUTF-8に変換。
あとは、読み込んだcsvファイルのデータを表示したりするだけです。
foreach($data as $list) { echo $list; }
fuelphpの機能を使えば簡単にできました。
ちなみにアップロードしたファイルを削除したい場合は、
//ファイルを削除したい場合 File::delete(dirname(DOCROOT).'/uploads/' . ファイル名); //ディレクトリを削除したい場合 File::delete_dir(dirname(DOCROOT).'/uploads/');
を書けばOKです。
では、今日はこのあたりで!