急いで書いたので、間違いがあるかもしれません。ちょっとここおかしいよという箇所があればご指摘ください。
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行削減できますが、複数のファイルのアップロードがうまくいきません。
ご参考まで。