2010-11-01 15 views
11

Utilizando CodeIgniter, estoy tratando de modificar el nombre del archivo cargado en camelCase eliminando espacios y poniendo en mayúscula las palabras siguientes.Cambiar el nombre de un archivo cargado en CodeIgniter

Estoy bastante seguro de que puedo cambiar el nombre del archivo utilizando el segundo parámetro de move_uploaded_file pero ni siquiera sé dónde buscar para averiguar cómo modificar el nombre a camelCase.

¡Gracias de antemano! Jon

Respuesta

14

leer la sección de carga de CI:

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

Primero vamos a echar un vistazo a cómo hacer una simple carga de archivos sin necesidad de cambiar el nombre del archivo:

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

Es así de simple y funciona bastante bien

Ahora, echemos un vistazo a la esencia de su problema. Lo primero que necesitamos para obtener el nombre de archivo de la matriz $ _FILES:

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

entonces podemos dividir la cadena con un delimitador _ así:

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

Entonces tendremos que iterar sobre la lista y crea una nueva cadena en la que todos, excepto el primer spot tienen letras mayúsculas:

$new_file_name = ''; 
$count = 1; 

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

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

Ahora que tenemos el nuevo nombre de archivo, que puede volver a lo que hicimos anteriormente. Básicamente, haces todo lo mismo excepto que agregas este param $ config:

$config['file_name'] = $new_file_name; 

¡Y eso debería hacerlo! De forma predeterminada, CI tiene overwrite $ config param establecido en FALSE, por lo que si hay algún conflicto, agregará un número al final de su nombre de archivo. Para ver la lista completa de parámetros, consulte el enlace en la parte superior de esta publicación.

+0

trabajaron ... Gracias en gran medida – jgravois

+0

Gran respuesta! Eso me ayuda mucho. –

+0

Estoy tratando de pasar del delimitador '_' al uso del' .'. En términos de explosión en el delimitador '.', un nombre de archivo que use' .' en lugar de '_' tiene más sentido. Sin embargo, por alguna razón, el guardado no toma mis nombres '.', pero insiste en usar' _'. ¿Alguien se encuentra con este tipo de problema para cambiar el nombre de las imágenes con 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; 

que debería funcionar también

Cuestiones relacionadas