前回(小石につまずくとけっこう痛い Codeigniter3 ファイル命名規約)に引き続き、
今回も PHP ( Codeigniter3 )で地味につまずいたことを書こうと思います。
何度も言いますが
Codeigniter は日本語の情報が少ない!!!
ということでよくつまずきます。
なので、自分の調べた備忘録も兼ねて、
ここにつまずきろく(記録)をためていきたいと思います。
今回は、
『 複数のファイルをまとめてアップロードする 』
です。
1つのファイルをアップロードする例は本家サイトにも載っているので割愛。
https://www.codeigniter.com/userguide3/libraries/file_uploading.html
何が困ったかというと、
1. そもそも複数のファイルデータってどうやってとるの?
2. アップロードメソッドに値ってどうやって設定するの?
という2点。結論から言うと、どちらも単純な PHP の話。
1. そもそも複数のファイルデータってどうやってとるの?
<input name="images[]" type="file" />
であれば、
$_FILES['images']でファイルデータの配列が取れます。
2. アップロードメソッドに値ってどうやって設定するの?
アップロードメソッド( $this->upload->do_upload() )
は1つずつのアップロードしか対応していないようなので、
ファイルデータの配列から1つずつループしてアップロードしていく必要があります。
$config = array( 'upload_path' => './uploads/', 'allowed_types' => 'jpg|gif|png', 'overwrite' => true, ); foreach ($files['name'] as $key => $image) { $_FILES['images']['name']= $files['name'][$key]; $_FILES['images']['type']= $files['type'][$key]; $_FILES['images']['tmp_name']= $files['tmp_name'][$key]; $_FILES['images']['error']= $files['error'][$key]; $_FILES['images']['size']= $files['size'][$key]; $config['file_name'] = $image; $this->upload->initialize($config); if ($this->upload->do_upload('images')) { $this->upload->data(); } else { return false; } }
1つ1つ値を設定し直してアップロードしていくだけの話でした。
フレームワークを使っているとデータを勝手に設定してくれたりするので、
『枠内』だけで考えてしまいがちになってしまう今日この頃。
足元の確認は大事ですね。
CodeIgniter , PHP
0 件のコメント:
コメントを投稿