使用Codeigniter修改上传的文件名 - 字符串操作

时间:2016-11-23 13:12:44

标签: php codeigniter

我使用codeigniter将图像文件上传到我的网站:

$uploaded = $this->upload->data();

以这种方式获取文件名:

$uploaded['file_name'];

我想更改此文件名添加" _thumb"在扩展之前和之后的名称。喜欢' sda8sda8fa8f9.jpg'到' sda8sda8fa8f9_thumb.jpg'。由于我需要保留散列名称,最简单的方法是什么?

2 个答案:

答案 0 :(得分:2)

配置CI's file uploader时,您可以将file_name选项传递给该课程。这将更改上传文件的名称。以下是文档中的说明:

  

如果设置CodeIgniter,则会将上传的文件重命名为此名称。文件名中提供的扩展名也必须是允许的文件类型。如果原始文件中没有提供扩展名,则将使用。

一个例子:

$this->load->library('upload', ['file_name' => 'new-file-name.ext']);
$this->upload->do_upload('file_field_name');

因此,您希望修改上传的文件名称。可以从PHP的$_FILES数组访问上传的文件名。首先,我们找出新名称,然后我们点击CI的上传库。假设字段名为fieldname

// Modify the filename, adding that "_thumb" thing
// I assumed the extension is always ".jpg" for the sake of simplicity,
// but if that's not the case, you can use "pathinfo()" to get info on
// the filename in order to modify it.
$new_filename = str_replace('.jpg', '_thumb.jpg', $_FILES['fieldname']['name']);

// Configure CI's upload library with the filename and hit it
$this->upload->initialize([
    'file_name' => $new_filename
    // Other config options...
]);

$this->upload->do_upload('fieldname');

请注意,原始文件名(来自$_FILES['fieldname']['name']的文件名)来自用户的浏览器。它是用户设备上的实际文件名。当您决定在代码中依赖它时,始终将其视为污点。

答案 1 :(得分:0)

只需用拇指将计算出的哈希值添加到文件名

$hash_variable = //Your calculated value
$thumb = '_thumb'
$config['file_name'] = $hash_variable.$thumb.".pdf|jpg|png etc";

$this->load->library('upload',$config);