Ответ 1
Проверьте библиотеку загрузки 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
, поэтому, если есть какие-либо конфликты, он добавит число до конца вашего имени файла. Полный список параметров см. В ссылке вверху сообщения.