【问题标题】:Two file upload control in same form takes same name at the time of uploading in codeigniter相同形式的两个文件上传控件在codeigniter中上传时采用相同的名称
【发布时间】:2016-02-12 10:05:48
【问题描述】:

我的表单中有两个文件上传控件,一个用于上传 css 文件,另一个用于 html 文件。 我的 css 文件名为 style.css,html 文件名为 test.html。

两个文件都已成功上传,但上传时都使用相同的名称。上传时的css文件名是style.css,html是文件名也是style.css。

css文件上传代码为:

       if(isset($_FILES['css_file']) AND $_FILES['css_file']['name'] != '') {
                        $xyz['upload_path'] = 'theme/'.$folder_name;    
                        $xyz['allowed_types'] = 'css';
                        $xyz['overwrite'] = FALSE;
                        $xyz['file_name'] = $_FILES['css_file']['name'];

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

                        if (!$this->upload->do_upload('css_file')) {
                            echo $this->upload->display_errors();
                        }else{
                            $abc_array['file'] = $this->upload->data();

                            $array_rc['css_file'] = $abc_array['file']['file_name'];

                         }
        }

html文件上传代码为:

    if(isset($_FILES['html_file']) AND $_FILES['html_file']['name'] != '') {
                        $abc['upload_path'] = 'theme/'.$folder_name;
                        $abc['allowed_types'] = 'html';
                        $abc['overwrite'] = FALSE;
                        $abc['file_name'] = $_FILES['html_file']['name'];

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

                        if (!$this->upload->do_upload('html_file')) {
                            echo $this->upload->display_errors();
                        }else{

                            $xyz_array['file'] = $this->upload->data();

                            $array_rc['html_file'] = $xyz_array['file']['file_name'];

                        }
        }

那么如何在上传时重命名 html 文件?

【问题讨论】:

  • 我猜是,在上传时,您对 css 和 html 文件使用相同的脚本,在调用 move_uploaded_file 之前,您将这些文件重命名为硬编码字符串。
  • 我正在使用两个不同的脚本来上传 css 和 html 文件。
  • 显示您的上传代码...来自控制器
  • 如果您能出示您的代码,那么我们或许可以为您提供帮助。

标签: php codeigniter file-upload


【解决方案1】:

看看这对你有没有帮助

$this->load->library("upload");
if(isset($_FILES['css_file']) AND $_FILES['css_file']['name'] != '') 
{
    $xyz['upload_path']     = 'theme/'.$folder_name;    
    $xyz['allowed_types']   = 'css';
    $xyz['overwrite']       = FALSE;
    $xyz['file_name']       = $_FILES['css_file']['name'];
    $this->upload->initialize($xyz);
    if (!$this->upload->do_upload('css_file')) 
    {
        echo $this->upload->display_errors();
    }
    else
    {
        print_r($this->upload->data());
    }
}

if(isset($_FILES['html_file']) AND $_FILES['html_file']['name'] != '') 
{
    $abc['upload_path']     = 'theme/'.$folder_name;
    $abc['allowed_types']   = 'html';
    $abc['overwrite']       = FALSE;
    $abc['file_name']       = $_FILES['html_file']['name'];
    $this->upload->initialize($abc);
    if (!$this->upload->do_upload('html_file')) 
    {
        echo $this->upload->display_errors();
    }
    else
    {
        print_r($this->upload->data());
    }
}

【讨论】:

    【解决方案2】:

    原生

    $config['encrypt_name'] = TRUE;
    

    $name = $_FILES["userfiles"]['name'];
    $config['file_name'] = $name;
    

    【讨论】:

    • 它采用加密名称,但扩展名仍然相同。
    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2019-10-07
    • 2018-09-28
    • 2018-09-28
    • 2023-03-07
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多