我使用codeigniter将图像文件上传到我的网站:
$uploaded = $this->upload->data();
以这种方式获取文件名:
$uploaded['file_name'];
我想更改此文件名添加" _thumb"在扩展之前和之后的名称。喜欢' sda8sda8fa8f9.jpg'到' sda8sda8fa8f9_thumb.jpg'。由于我需要保留散列名称,最简单的方法是什么?
答案 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);