2017-04-10 91 views
1

当我在同一视图/站点上有两个上载窗体时,Codeigniter中出现问题。看来Codeigniter只承认从一个表单提交。即使我在表单中更改输入名称,问题仍然存在。 下面是我的观点和CONTROLER:在CodeIgniter中的相同视图上的两个窗体

查看:

<?php echo form_open_multipart('admin/upload/do_upload_ac');?> 
        <input type="file" name="actives" /> 
        <br /><br /> 
        <input class="btn btn-primary" type="submit" value="Add Active Emails" /> 
        </form> 

<?php echo form_open_multipart('admin/upload/do_upload_un');?> 
        <input type="file" name="unactives" /> 
        <br /><br /> 
        <input class="btn btn-primary" type="submit" value="Add Active Emails" /> 
        </form> 

发生了。控制器:

public function do_upload_ac() 
    { 

      header('Cache-Control: must-revalidate'); 
      $config['upload_path']   = './uploads/'; 
      $config['allowed_types']  = 'csv'; 
      $config['max_size']    = 0; 
      $config['max_width']   = 1024; 
      $config['max_height']   = 768; 

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

      if (! $this->upload->do_upload('actives')) 
      { 
        $error = array('error' => $this->upload->display_errors()); 
        $this->session->set_flashdata('error', 'Csv Data Import failed!! Please check the file size or file type!'); 
        //$this->load->view('admin/muc', $error); 
        redirect(base_url() . 'index.php/admin/muc'); 
      } 
      else 
      { 
        $data = array('upload_data' => $this->upload->data()); 

        $filename_ac = $this->upload->data('full_path'); 

        $this->Upload_model->insert_csv_ac($filename_ac); 
        $this->Upload_model->clean_temp_ac(); 
        $this->Upload_model->truncate_temp_ac();    

        $this->session->set_flashdata('success', 'Csv Data Imported Succesfully!'); 
        //$this->load->view('success', $data); 
        //unlink($filename_ac); 
        redirect(base_url() . 'index.php/admin/muc'); 
      } 


    } 

    public function do_upload_un() 
    { 
      header('Cache-Control: must-revalidate');     
      $config['upload_path']   = './uploads/'; 
      $config['allowed_types']  = 'csv'; 
      $config['max_size']    = 0;  



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

      if (! $this->upload->do_upload('unactives')) 
      { 
        $error = array('error' => $this->upload->display_errors()); 
        $this->session->set_flashdata('error', 'Csv Data Import failed!! Please check the file size or file type!'); 
        //$this->load->view('admin/muc', $error); 
        redirect(base_url() . 'index.php/admin/muc'); 
      } 
      else 
      { 
        $data = array('upload_data' => $this->upload->data()); 

        $filename_ac = $this->upload->data('full_path'); 

        $this->Upload_model->insert_csv_un($filename_un); 
        $this->Upload_model->clean_temp_un(); 
        $this->Upload_model->truncate_temp_un();    

        $this->session->set_flashdata('success', 'Csv Data Imported Succesfully!'); 
        //$this->load->view('success', $data); 
        unlink($filename_un); 
        redirect(base_url() . 'index.php/admin/muc'); 
      } 


    } 

我正在寻找这里类似的问题,但我发现一次上传多个文件。有任何想法吗?谢谢大家。

+1

给你的表单一个ID,如id =“form1”和id =“form2”,然后使用jquery函数提交表单 –

+0

谢谢,但它不工作。任何没有jQuery的解决方案? – wishmaster75

+0

可以用'''<?php echo form_close()>结束表单吗? ?'''而不是''''''。并使用'''输入类型=“提交”>'''而不是按钮。 – kishor10d

回答

0

好的,为了让您对多次提交有所了解,我为您呈现了一个示例视图。我创建了以下观点

enter image description here

有了这个代码

<div class="container"> 
    <div class="col-md-3" style="box-shadow: 2px 2px 2px grey"> 
     <form action="<?php echo base_url().'admin/upload/do_upload_ac'?>" method="post" id="form1"> 
      <div class="form-group"> 
       <label > Upload 1</label> 
       <input type="file" name="file1" > 
      </div> 
      <div class="form-group"> 
       <button type="button" class="btn btn-danger" onclick="submitOne()">Upload Image1</button> 
      </div> 
     </form> 
    </div> 
    <div class="col-md-3" style="box-shadow: 2px 2px 2px grey"> 
     <form action="<?php echo base_url().'admin/upload/do_upload_un'?>" method="post" id="form2"> 
      <div class="form-group"> 
       <label > Upload 2</label> 
       <input type="file" name="file1" > 
      </div> 
      <div class="form-group"> 
       <button type="button" class="btn btn-danger" onclick="submitTwo()">Upload Image2</button> 
      </div> 
     </form> 
    </div> 
</div> 

而这个脚本

<script> 
function submitOne() 
{ 

    $('#form1').submit(); 
} 
function submitTwo() 
{ 

    $('#form2').submit(); 
} 
</script> 

我按下第一个按钮,我得到

enter image description here

同样如果我按第二个按钮它会显示我form2将被提交。您提交表单后所做的一切都在您提交表单的URL中。

+0

谢谢先生,但对不起,仍然没有工作。我得到了jquery警报,看起来一切都很好,但上传只发生在第一种形式。 – wishmaster75

+0

现在尝试,我已经删除了警报,并在表单动作中放置了网址 –

+0

我确实尝试过,但stil .....对不起 – wishmaster75

0

您的代码无需更新即可使用。但是你应该用codeigniter的form_close()或者用户html格式标签改变html格式,以开始形式。

+0

你究竟是什么意思? – wishmaster75

+0

我的意思是说Codeigniter没有任何规则可以在一个视图中使用一种形式。表单单独工作并发布它的字段并为其中给定的操作输入值.means $ _FILES ['actives']将在操作/方法'do_upload_ac'中发布,$ _FILES ['unactives']将发布在操作/方法'do_upload_un ' –

+0

我确实为输入文件发布了不同的输入名称,但它不工作........ – wishmaster75

相关问题