Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 如何在codeigniter中以相同的形式上载不同的配置上载_Forms_Codeigniter_File Upload - Fatal编程技术网

Forms 如何在codeigniter中以相同的形式上载不同的配置上载

Forms 如何在codeigniter中以相同的形式上载不同的配置上载,forms,codeigniter,file-upload,Forms,Codeigniter,File Upload,我有一个2上传文件的表单,我想上传不同配置的pdf文件,我已经尝试了这个。但只能通过firs配置进行保存。我在搜索可能是使用$this->upload->initialize() 这是我的代码: function do_upload() { $siup['upload_path'] = './upload/siup'; $siup['allowed_types'] = 'pdf'; $siup['file_n

我有一个2上传文件的表单,我想上传不同配置的pdf文件,我已经尝试了这个。但只能通过firs配置进行保存。我在搜索可能是使用
$this->upload->initialize()
这是我的代码:

function do_upload()
    {
        $siup['upload_path']          = './upload/siup';
        $siup['allowed_types']        = 'pdf';
        $siup['file_name']            = 'SIUP_'.str_replace(' ','_',ltrim($this->input->post('nama'),'KM '));
        $this->upload->initialize($siup);
        $this->load->library('upload', $siup);

        $keterangan['upload_path']          = './upload/keterangan';
        $keterangan['allowed_types']        = 'pdf';
        $keterangan['file_name']            = 'Keterangan_'.str_replace(' ','_',ltrim($this->input->post('nama'),'KM '));
        $this->upload->initialize($keterangan);
        $this->load->library('upload', $keterangan);

        if ( ! $this->upload->do_upload('siup'))
        {
            $data['error']          = $this->upload->display_errors().'on SIUP';
            $data['icon']           = 'upload';
            $data['title']          = 'Upload';
            $data['header_page']    = 'upload';
            $data['content']        = 'master_data/employee_form';
            $this->template->index($data);
        }elseif(! $this->upload->do_upload('keterangan')){
            $data['error']          = $this->upload->display_errors().'on Keteragan';
            $data['icon']           = 'upload';
            $data['title']          = 'Upload';
            $data['header_page']    = 'upload';
            $data['content']        = 'master_data/employee_form';
            $this->template->index($data);
        }
        else
        {
            $data['upload_data']    = $this->upload->data();
            $data['icon']           = 'upload';
            $data['title']          = 'Upload';
            $data['header_page']    = 'upload';
            $data['content']        = 'master_data/success';
            $this->template->index($data);
        }
    } 

因此,在执行
do_upload()
函数之前进行初始化,因此只有最后一次初始化有效。您需要按程序重新排列它,以便初始化第一个文件的配置,然后上载第一个文件,然后清除第一个初始化并使用第二个配置,然后上载第二个文件

大概是这样的:

function do_upload() {

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

    $siup['upload_path'] = './upload/siup';
    $siup['allowed_types'] = 'pdf';
    $siup['file_name'] = 'SIUP_' . str_replace(' ', '_', ltrim($this->input->post('nama'), 'KM '));
    $this->upload->initialize($siup);

    if (!$this->upload->do_upload('siup')) {
        $data['error'] = $this->upload->display_errors() . 'on SIUP';
        $data['icon'] = 'upload';
        $data['title'] = 'Upload';
        $data['header_page'] = 'upload';
        $data['content'] = 'master_data/employee_form';
        $this->template->index($data);
        exit;
    }

    /**
     * need to store in var before second initialization
     */
    $siup_fileinfo = $this->upload->data(); // 1st file data

    $keterangan['upload_path'] = './upload/keterangan';
    $keterangan['allowed_types'] = 'pdf';
    $keterangan['file_name'] = 'Keterangan_' . str_replace(' ', '_', ltrim($this->input->post('nama'), 'KM '));
    $this->upload->initialize($keterangan, true); // use 2nd param to reset

    if (!$this->upload->do_upload('keterangan')) {
        $data['error'] = $this->upload->display_errors() . 'on Keteragan';
        $data['icon'] = 'upload';
        $data['title'] = 'Upload';
        $data['header_page'] = 'upload';
        $data['content'] = 'master_data/employee_form';
        $this->template->index($data);
    } else {

        $keterangen_fileinfo = $this->upload->data(); // 2nd file data

        //$data['upload_data'] = $this->upload->data();
        $data['icon'] = 'upload';
        $data['title'] = 'Upload';
        $data['header_page'] = 'upload';
        $data['content'] = 'master_data/success';
        $this->template->index($data);
    }
}
在第二次初始化之前以及上载第一个文件之后您需要将上载数据存储在一个变量中,否则在第二次上载之后它将丢失。我没有使用这些变量,但您必须弄清楚如何处理它们

此外,请注意,以这种方式设置文件名将不起作用。您需要获得扩展并包括它。见文件:

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


它可以工作,但是,如果按钮上传siup为空,则页面为白色屏幕。我不知道“如果按钮为空”是什么意思。但我相信我已经回答了你的问题:“如何在codeigniter中以相同的形式上传不同的配置文件”。。如果您有任何其他问题,它们应该是一个单独的问题。如何在数据库中输入文件名?
$keterangen_fileinfo=$this->upload->data()$名称2=$keterangen_fileinfo['file_name']并添加到数据库: