2017-04-10 94 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

相關問題