tabimoba.net

とあるエンジニアの雑記帳

CodeIgniterで複数のファイルのアップロードを受け付けるには?

急いで書いたので、間違いがあるかもしれません。ちょっとここおかしいよという箇所があればご指摘ください。

CodeIgniterで複数のファイルをアップロードする場合は、id:KuniTsujiさんの{CodeIgniter]CodeIgniterで複数のファイルをアップする - KuniTsujiのPHP開発日記を参考にされることが多いかと思いますが、CodeIgniter2.0ではユーザライブラリを用意せずに複数のファイルをアップロードすることが出来ます。(もしかしたら、それ以前のバージョンでもそうなのかもしれないですが・・・)
CodeIgniterで複数のファイルをアップロードする場合は、以下のようにコードを書きます。

class Example extends CI_Controller {
public function submit() {
/* --------------------------------------------------------
フォームからpostされた複数のファイルをアップロードする
-------------------------------------------------------- */
$fields[0] = "fld_hoge0";
$fields[1] = "fld_hoge1";
$fields[2] = "fld_hoge2";

foreach ($fields as $key => $val) {
$this->upfile($val);
}
}

public function upfile($fieldname) {
/* --------------------------------------------------------
ファイルをアップロードする
-------------------------------------------------------- */
$uppath = "/foo/bar/";

$config['file_name'] = uniqid();
$config['upload_path'] = $uppath;
$config['allowed_types'] = 'pdf|gif|jpg|png|txt|doc|xls|ppt|docx|xlsx|pptx';
$config['overwrite'] = TRUE;

$this->load->library('upload');
$this->upload->initialize($config);

$this->upload->do_upload($fieldname);
$upinfo = $this->upload->data();

result $upinfo;
}
}

ここで重要な部分が、以下の部分です。

$this->load->library('upload');
$this->upload->initialize($config);

これを、

$this->load->library('upload',$config);

と書くと、コードが1行削減できますが、複数のファイルのアップロードがうまくいきません。

ご参考まで。