2010-11-01 11 views
11

Użycie CodeIgniter, próbuję zmodyfikować nazwę przesłanego pliku na camelCase poprzez usunięcie spacji i wielką literę kolejnych słów.Zmiana nazwy przesłanego pliku w CodeIgniter

Jestem prawie pewien, że mogę zmienić nazwę pliku przy użyciu drugiego parametru move_uploaded_file, ale nie wiem nawet, gdzie szukać, aby dowiedzieć się, jak zmienić nazwę na camelCase.

Z góry dziękuję! Jon

Odpowiedz

14

Wyjazd CI, przesyłania Biblioteka:

http://www.codeigniter.com/user_guide/libraries/file_uploading.html

Niech najpierw przyjrzeć się, jak to zrobić prosty upload plików bez zmiany nazwy pliku:

$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(); 
} 

To takie proste i działa całkiem dobrze.

Teraz spójrzmy na mięso twojego problemu. Najpierw musimy uzyskać nazwę pliku z tablicy $ _FILES:

$file_name = $_FILES['file_var_name']['name']; 

Wtedy możemy podzielić ciąg z _ ogranicznik tak:

$file_name_pieces = split('_', $file_name); 

Wtedy będziemy musieli iteracyjne nad lista i zrobić nowy ciąg, gdzie wszystko z wyjątkiem pierwszego rzutu mieć wielkie litery:

$new_file_name = ''; 
$count = 1; 

foreach($file_name_pieces as $piece) 
{ 
    if ($count !== 1) 
    { 
     $piece = ucfirst($piece); 
    } 

    $new_file_name .= $piece; 
    $count++; 
} 

teraz, gdy mamy nową nazwę pliku, możemy ponownie co zrobiliśmy powyżej. Zasadniczo robisz wszystko tak samo, z wyjątkiem dodania tego parametru $ config:

I to powinno wystarczyć! Domyślnie CI ma ustawiony parametr konfiguracyjny overwrite $ na FALSE, więc jeśli wystąpią jakiekolwiek konflikty, doda numer na końcu nazwy pliku. Aby uzyskać pełną listę parametrów, zobacz link u góry tego wpisu.

+0

pracował ... dziękuję znacznie – jgravois

+0

Wielkiej odpowiedź! To mi bardzo pomaga. –

+0

Próbuję przejść od używania ogranicznika '_' do używania' .'. Pod względem eksplodującego na separatorze '.', nazwa pliku używająca' .' zamiast '_' ma więcej sensu. Jednak z jakiegoś powodu zapis nie przyjmuje moich nazw '.', ale nalega na użycie' _'. Czy ktoś ma taki problem z przemianowaniem obrazów za pomocą CI? – TARKUS

0
$file_name = preg_replace('/[^a-zA-Z]/', '', ucwords($_FILES['file_var_name']['name'])); 
3
$this->load->helper('inflector'); 
$file_name = underscore($_FILES['file_var_name']['name']); 
$config['file_name'] = $file_name; 

że powinno działać zbyt

Powiązane problemy