Découvrez la bibliothèque de téléchargement de CI:
http://www.codeigniter.com/user_guide/libraries/file_uploading.html
Voyons d'abord jeter un oeil à la façon de faire un téléchargement simple fichier sans changer le nom du fichier:
$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();
}
Il est simple et ça marche plutôt bien. Maintenant, jetons un coup d'œil à la viande de votre problème. Nous devons d'abord obtenir le nom de fichier à partir du tableau $ _FILES:
$file_name = $_FILES['file_var_name']['name'];
Ensuite, on peut diviser la chaîne avec un séparateur _
comme ceci:
$file_name_pieces = split('_', $file_name);
Ensuite, nous allons devoir parcourir la liste et faire une nouvelle chaîne où tous, sauf la première place ont des lettres en majuscules:
$new_file_name = '';
$count = 1;
foreach($file_name_pieces as $piece)
{
if ($count !== 1)
{
$piece = ucfirst($piece);
}
$new_file_name .= $piece;
$count++;
}
maintenant que nous avons le nouveau nom, nous pouvons revenir sur ce que nous avons fait ci-dessus. Fondamentalement, vous faites tout pareil sauf que vous ajoutez ce $ config param:
$config['file_name'] = $new_file_name;
Et cela devrait le faire! Par défaut, CI a le paramètre overwrite
$ config défini sur FALSE
, donc s'il y a des conflits, il ajoutera un nombre à la fin de votre nom de fichier. Pour la liste complète des paramètres, voir le lien en haut de cet article.
travaillé ... merci beaucoup – jgravois
Grande réponse! Ça m'aide beaucoup. –
J'essaie de passer de l'utilisation du délimiteur '_' à l'utilisation de' .'. En termes d'exploser sur le délimiteur '.', Un nom de fichier utilisant '.' au lieu de' _' a plus de sens. Cependant, pour une raison quelconque, la sauvegarde ne prend pas mes noms '.', mais insiste pour utiliser' _'. Quelqu'un a rencontré ce genre de problème en renommant les images avec CI? – TARKUS