Проверьте библиотеку загрузки CI:
http://www.codeigniter.com/user_guide/libraries/file_uploading.html
Давайте сначала посмотрим, как сделать простую загрузку файла без изменения имени файла:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpg|jpeg|gif|png';
$this->upload->initialize($config);
if ( ! $this->upload->do_upload())
{
$error = $this->upload->display_errors();
}
else
{
$file_data = $this->upload->data();
}
Это так просто и работает довольно хорошо.
Теперь давайте посмотрим на суть вашей проблемы. Сначала нам нужно получить имя файла из массива $ _FILES:
$file_name = $_FILES['file_var_name']['name'];
Затем мы можем разделить строку с помощью _
разделителя следующим образом:
$file_name_pieces = split('_', $file_name);
Затем нам нужно будет перебрать список и создать новую строку, где все, кроме первой точки, имеют заглавные буквы:
$new_file_name = '';
$count = 1;
foreach($file_name_pieces as $piece)
{
if ($count !== 1)
{
$piece = ucfirst($piece);
}
$new_file_name .= $piece;
$count++;
}
Теперь, когда у нас есть новое имя файла, мы можем вернуться к тому, что мы сделали выше. По сути, вы делаете все то же самое, за исключением того, что добавляете этот параметр $ config:
$config['file_name'] = $new_file_name;
И это должно сделать это! По умолчанию CI имеет параметр overwrite
$ config, установленный на FALSE
, поэтому, если возникнут какие-либо конфликты, он добавит число в конец вашего имени файла. Полный список параметров см. По ссылке вверху этого сообщения.