【发布时间】:2010-11-01 22:53:10
【问题描述】:
使用 CodeIgniter,我正在尝试通过删除所有空格并将后续单词大写来将上传文件的名称修改为驼峰式。
我很确定我可以使用 move_uploaded_file 的第二个参数重命名文件,但我什至不知道在哪里可以找到如何将名称修改为 camelCase。
提前致谢! 乔恩
【问题讨论】:
标签: codeigniter
使用 CodeIgniter,我正在尝试通过删除所有空格并将后续单词大写来将上传文件的名称修改为驼峰式。
我很确定我可以使用 move_uploaded_file 的第二个参数重命名文件,但我什至不知道在哪里可以找到如何将名称修改为 camelCase。
提前致谢! 乔恩
【问题讨论】:
标签: codeigniter
查看 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,因此如果有任何冲突,它会在文件名末尾附加一个数字。有关参数的完整列表,请参阅本文顶部的链接。
【讨论】:
_ 分隔符切换到使用 .。就. 分隔符的爆炸而言,使用. 而不是_ 的文件名更有意义。但是,出于某种原因,保存并没有使用我的. 名称,而是坚持使用_。有人在用 CI 重命名图像时遇到过这种问题吗?
$this->load->helper('inflector');
$file_name = underscore($_FILES['file_var_name']['name']);
$config['file_name'] = $file_name;
应该也可以
【讨论】:
$file_name = preg_replace('/[^a-zA-Z]/', '', ucwords($_FILES['file_var_name']['name']));
【讨论】: