PHP Codeigniter上传类,重命名具有特定架构的文件

chr*_*ris 3 php upload codeigniter

我在使用Codeigniter时遇到了麻烦,并且在上传过程中从要提供的上传库中重命名文件.现在在任何人说出来之前,我并不是在寻找"加密"的文件名.

我的问题是在上传图片时,你可以处理好一些类型.那么如何使用file_nameconfig选项将文件名更改为特定模式(我已经将模式部分组合起来并且正在工作).但保持相同的文件类型?

现在我正在尝试

$upload_config['file_name'] = $generated_filename_from_schema

唯一的问题是$generated_filename_from_schema没有文件扩展名,并且将文件扩展名排除在等式CI之外似乎完全忽略它并且只是获取文件并且append_1,_2,_3如果文件具有相同的名称则上升,否则它只是留下完整的名字.

现在我必须传递$config给CI以便它上传文件,但是如何在上传之前确定我正在使用哪种文件,这样我就可以使用我的名字生成模式.

*编辑*

    $upload_config['upload_path'] = realpath(APPPATH.'../images/');
    $upload_config['allowed_types'] = 'gif|jpg|png';
    $upload_config['max_size']  = 0;
    $upload_config['max_width'] = 0;
    $upload_config['max_height'] = 0;
    $upload_config['remove_spaces'] = true;

    $upload_config['file_name'] = $this->genfunc->genFileName($uid);

    if($this->input->post('uploads'))
    {

        $this->load->library('upload');
        $this->upload->initialize($upload_config);

        if (!$this->upload->do_upload())
        {
            //echo 'error';
            echo $config['upload_path'];
            $this->data['errors'] = $this->upload->display_errors();
        }
        else
        {
            //echo 'uploaded';
            $this->data['upload_data'] = $this->upload->data();
        }
    }
Run Code Online (Sandbox Code Playgroud)

GBD*_*GBD 10

您可以使用$ _FILES数组来获取文件的原始名称.

解压缩原始文件的扩展名.然后,附加到新文件名.

请尝试以下方式

$ext = end(explode(".", $_FILES[$input_file_field_name]['name']));
$upload_config['file_name'] = $this->genfunc->genFileName($uid).'.'.$ext;
Run Code Online (Sandbox Code Playgroud)