codeingiter のファイル アップロード クラスを使用していないようです。あなたの問題を解決するので、それを使用することをお勧めします。
同じ名前のファイルをアップロードし、渡したオプションで上書きを FALSE に設定した場合、codeigniter は car.png の名前をcar1.png (または利用可能な次の番号) に変更します。
アップロードが成功すると、そのファイルに関連するすべてのデータを含む配列が返されます
Array
(
[file_name] => mypic.jpg
[file_type] => image/jpeg
[file_path] => /path/to/your/upload/
[full_path] => /path/to/your/upload/jpg.jpg
[raw_name] => mypic
[orig_name] => mypic.jpg
[client_name] => mypic.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)
ご覧のとおり、この方法では、ファイルが変更されていても、ファイルの名前を取得できます。
ファイル アップロード クラスとその実装方法について詳しくは、http:
//ellislab.com/codeigniter/user-guide/libraries/file_uploading.htmlをご覧ください。
EDIT2ビューで入力ファイルに名前を付ける必要がありますuserfile1
、userfile2、userfile3など
class Upload extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload(){
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
foreach($_FILES as $key => $value){
if ( ! $this->upload->do_upload($key)){
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}else{
//This $data is the array I described before
$data = array('upload_data' => $this->upload->data());
//So if you this you will get the file name
$filename = $data['upload_data']['file_name'];
}
}
$this->load->view('upload_success', $data);
}
}
?>