Переименование загруженного файла в CodeIgniter - PullRequest
11 голосов
/ 02 ноября 2010

Используя CodeIgniter, я пытаюсь изменить имя загруженного файла на camelCase, удаляя все пробелы и используя заглавные буквы в последующих словах.

Я вполне уверен, что могу переименовать файл, используя второй параметр move_uploaded_file, но я даже не знаю, где искать, чтобы выяснить, как изменить имя на camelCase.

Заранее спасибо! Jon

Ответы [ 3 ]

14 голосов
/ 02 ноября 2010

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

3 голосов
/ 16 июля 2013
$this->load->helper('inflector');
$file_name = underscore($_FILES['file_var_name']['name']);
$config['file_name'] = $file_name;

это тоже должно работать

0 голосов
/ 05 марта 2012
$file_name = preg_replace('/[^a-zA-Z]/', '', ucwords($_FILES['file_var_name']['name']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...