2013-01-24 11 views
7

im cercando di scrivere un codice in cui posso inviare un modulo inserire i contenuti in un database, allo stesso tempo, eseguire un upload di file e lo hanno memorizzato in una cartella all'interno mio servermodulo Codeigniter presentare con file di caricamento

il percorso della cartella è chiamata arrivi che è situato alla base del mio sito

ecco il mio codice

controllore (site.php)

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Site extends CI_controller { 

public function __construct() 
{ 
    parent::__construct(); 
    // Your own constructor code 
    $this->load->model("site_model"); 
    $this->load->helper(array('form', 'url')); 
} 

public function cmain($type,$page) 
{ 
    $data = $this->_initialize_data(); //this is just a bunch of variables that im calling in another function 
    $data['type'] = $type; 
    $data['page'] = $page; 
    $this->load->vars($data); 
    $this->load->view('site/cmain'); 
} 


public function m1() 
     {    

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

      if(isset($_POST['m1'])) 
      { 
       $suffix = $this->input->post("suffix"); 
       $fn = $this->input->post("fn"); 
       $mn = $this->input->post("mn"); 
       $ln = $this->input->post("ln"); 


       $newdata = array('suffix'=>$suffix, 
           'fn'=>$fn, 
           'mn'=>$mn, 
           'ln'=>$ln, 

           ); 
       //this code is for the file upload 
          $config['upload_path'] = 'uploads'; 
          $config['allowed_types'] = '*'; 

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

          $data = array('upload_data' => $this->upload->data()); 
       //end of file upload codes     

       $this->db->insert('myself', $newdata); 

       redirect(base_url() . "site/complaint");  

      } 

     } 

vista (cmain .php)

<form action="<?php echo base_url();?>site/m1" name="details" id="details" method="post" enctype="multipart/form-data"> 
     <table class='table' width="100%"> 
      <tr> 
      <td colspan='2'> 
       <b><font color="#3B608C">Personal Information</font></b> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Suffix (e.g. Jr., III) 
      </td> 
      <td> 
       <input type="text" name="suffix" id="suffix" value=""> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       First Name* 
      </td> 
      <td> 
       <input type="text" name="fn" id="fn" value=""> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Middle Name* 
      </td> 
      <td> 
       <input type="text" name="mn" id="mn" value=""> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       Last Name* 
      </td> 
      <td> 
       <input type="text" name="ln" id="ln" value=""> 
      </td> 
     </tr> 
</table> 

      <table> 
     <tr> 
     <td width="50%"> 
     Please attach documents pertinent to these complaints. <br> 
     (Attach a zip file if more than one document)<br> 
     </td> 
     <td align="center"> 
     <input name = "userfile" type="file" class="input-xlarge" id = "userfile" /> 
     </td></tr> 
     </table> 
     <input type="submit" value="Submit Form" class="pull-right" id="submit" name="m1"/> 
</form> 

il modulo messaggi correttamente nel database, come il suffisso, fn, ln e mn comunque il depliant upload di file di lavoro

Ho fatto del mio meglio per seguire quello che i campioni docs CodeIgniter e solo ho le linee che penso mi serva

sto facendo qualcosa di sbagliato?

grazie

+1

provare a utilizzare il valida classe di lezione. e quindi impostare il caricamento dell'immagine come un callback personalizzato. –

risposta

4

finalmente capito di lavoro

ho usato questo per la parte di caricamento file

   //start of file upload code 
       $config['upload_path'] = './uploads/'; 
       $config['allowed_types'] = '*'; 
       $this->load->library('upload', $config); 
       $this->upload->do_upload(); 
       $data = $this->upload->data(); 
       //end of file upload code 

e cambiato il

<form action="<?php echo base_url();?>site/m1" name="details" id="details" method="post" enctype="multipart/form-data"> 

in

<?php echo form_open_multipart('site/c_upload');?> 
+0

cos'è c_upload? non vedo una funzione chiamata c_upload nel controller –

0
  • Hai impostato i permessi di scrittura per la cartella 'uploads'? (esempio: php.net/manual/en/function.chmod.php)

  • Sempre fare lo sviluppo guidato da test. Ho seguito blocco di codice da this url

    if (! $this->upload->do_upload()) 
    { 
        $error = array('error' => $this->upload->display_errors()); 
    
        $this->load->view('upload_form', $error); 
    } 
    
1

penso che deve avere per impostare upload di file preferenza

$config['upload_path'] = './uploads/'; 
$config['allowed_types'] = 'gif|jpg|png'; 
$config['max_size'] = '100'; 
$config['max_width'] = '1024'; 
$config['max_height'] = '768'; 

Form Helper

$this->load->helper(array('form', 'url')); 

For further detail have a look

Problemi correlati