hero_picture

fuelphpでcsvファイルをアップロードして読み込み処理

こんにちは

WEBエンジニアのyuchiです。

前々回の記事に引き続き、開発でfuelphpからCSVファイルをアップロードして読み込みしないといけなかったので、

その時調べた方法を書きたいと思います。

まずはCSVファイルをアップロードします。

1// 初期設定
2$config = array(
3'path' => dirname(DOCROOT).'/uploads/',
4'randomize' => true,
5'ext_whitelist' => array('csv'),
6);
7// アップロード基本プロセス実行
8Upload::process($config);
9// 検証
10if (Upload::is_valid())
11{
12// 設定を元に保存
13Upload::save();
14// 情報をデータベースに保存する場合
15$result = Model_Uploads::deliv_add(Upload::get_files());
16}
17

configでアップロードする場所をpathに指定し、保存するファイルの拡張しを設定し保存します。

randomizeをtrueにすると保存されるファイル名がランダムにつけられます。

次にアップロードしたファイルからcsvの読み込みを行います。

1foreach ($files as $file)
2{
3$data = file_get_contents($file['saved_to'].$file['saved_as']);
4$data = mb_convert_encoding($data, 'UTF-8', 'SJIS');
5$data = Format::forge($data, 'csv')->to_array();
6}
7

csvファイルの文字コードが分からないため、文字化け防止としてmb_convert_encodingで変換します。

例としまして、ここではSJISからUTF-8に変換。

あとは、読み込んだcsvファイルのデータを表示したりするだけです。

1foreach($data as $list)
2{
3echo $list;
4}
5

fuelphpの機能を使えば簡単にできました。

ちなみにアップロードしたファイルを削除したい場合は、

1//ファイルを削除したい場合
2File::delete(dirname(DOCROOT).'/uploads/' . ファイル名);
3//ディレクトリを削除したい場合
4File::delete_dir(dirname(DOCROOT).'/uploads/');
5

を書けばOKです。

では、今日はこのあたりで!