こんにちは
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で変換します。
あとは、読み込んだ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です。
では、今日はこのあたりで!