SEEDS Creator's Blog

読者です 読者をやめる 読者になる 読者になる

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

IT php WEB プログラミング

こんにちは

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です。

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