2017-02-09 2 views
2

Ich kann es schaffen, Daten in den tblaccount einzufügen. Aber das Problem ist, dass das Bild nicht hochgeladen werden kann. Der tblaccount enthält die richtigen Daten für Vorname, Nachname, E-Mail, Abteilung, Benutzername und Passwort, aber das Bild bleibt leer, auch wenn ich einige Bilder hochgeladen habe.Wie lade ich ein Bild mit Code-Signierer hoch?

UPDATE: Das Bild kann jetzt in den Ordner hochgeladen werden, aber kein Glück in Tblaccount. Es zeigt nur leere Daten an.

signup.php Controller:

public function index() 
{ 
    // set form validation rules 
    $this->form_validation->set_rules('firstname', 'First Name', 'trim|required|alpha|min_length[3]|max_length[30]'); 
    $this->form_validation->set_rules('lastname', 'Last Name', 'trim|required|alpha|min_length[3]|max_length[30]'); 
    $this->form_validation->set_rules('email', 'Email Address', 'trim|required|valid_email|is_unique[tblaccount.Email]'); 
    $this->form_validation->set_rules('department', 'Department', 'trim|required|alpha|min_length[3]|max_length[30]'); 
    $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha|min_length[3]|max_length[30]|is_unique[tblaccount.Username]'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required'); 
    $this->form_validation->set_rules('cpassword', 'Confirm Password', 'trim|required|matches[password]'); 
    $this->form_validation->set_rules('picture', 'Image', 'trim|required'); 

    // submit 
    if ($this->form_validation->run() == FALSE) 
    { 
     // fails 
     $this->load->view('signup_view'); 
    } 
    else 
    { 
     if(!empty($_FILES['picture']['name'])) 
     { 
      $config['upload_path'] = './uploads/images/'; 
      $config['allowed_types'] = 'jpg|jpeg|png|gif'; 
      $config['max_size'] = 10000000; 
      $config['file_name'] = $_FILES['picture']['name']; 

      //Load upload library and initialize configuration 
      $this->load->library('upload',$config); 
      $this->upload->initialize($config); 

      if($this->upload->do_upload('picture')) 
      { 
       $uploadData = $this->upload->data(); 
       $picture = $uploadData['file_name']; 
      } 
      else 
      { 
       $picture = ''; 
       $error = array('error' => $this->upload->display_errors()); 
       echo "<script>alert('JPG, JPEG, PNG and GIF type of file only is allowed and atleast 10MB of size');window.location = '".base_url("index.php/signup")."';</script>"; 
      } 
     } 
     else 
     { 
      $picture = ''; 
     } 
      $data = array(
       'First_Name' => $this->input->post('firstname'), 
       'Last_Name' => $this->input->post('lastname'), 
       'Email' => $this->input->post('email'), 
       'Department' => $this->input->post('department'), 
       'Username' => $this->input->post('username'), 
       'Password' => $this->input->post('password'), 
       'Picture' => $picture 
      ); 

      if ($this->account_model->insert($data)) 
      { 
       $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are successfully registered! Please login to access your profile!</div>'); 
       redirect('login'); 
      } 
      else 
      { 
       // error 
       $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error. Please try again later!!!</div>'); 
       redirect('signup'); 
      } 
    } 
} 

signup.php Ansicht:

<div class="row"> 
     <div class="col-md-4 col-md-offset-4 well"> 
      <?php echo form_open_multipart('signup');?> 
       <legend>Signup</legend> 

        <div class="form-group"> 
         <label for="name">First Name</label> 
          <input class="form-control" name="firstname" placeholder="First Name" type="text" value="<?php echo set_value('First_Name');?>"/> 
          <span class="text-danger"><?php echo form_error('firstname'); ?></span> 
        </div>   

        <div class="form-group"> 
         <label for="name">Last Name</label> 
          <input class="form-control" name="lastname" placeholder="Last Name" type="text" value="<?php echo set_value('Last_Name');?>"/> 
          <span class="text-danger"><?php echo form_error('lastname'); ?></span> 
        </div> 

        <div class="form-group"> 
         <label for="email">Email Address</label> 
          <input class="form-control" name="email" placeholder="Email Address" type="text" value="<?php echo set_value('Email');?>"/> 
          <span class="text-danger"><?php echo form_error('email'); ?></span> 
        </div> 

        <div class="form-group"> 
         <label for="email">Department</label> 
          <input class="form-control" name="department" placeholder="Department" type="text" value="<?php echo set_value('Department');?>"/> 
          <span class="text-danger"><?php echo form_error('department'); ?></span> 
        </div> 

        <div class="form-group"> 
         <label for="email">Username</label> 
          <input class="form-control" name="username" placeholder="Username" type="text" value="<?php echo set_value('Username');?>"/> 
          <span class="text-danger"><?php echo form_error('username'); ?></span> 
        </div> 

        <div class="form-group"> 
         <label for="subject">Password</label> 
          <input class="form-control" name="password" placeholder="Password" type="password"/> 
          <span class="text-danger"><?php echo form_error('password'); ?></span> 
        </div> 

        <div class="form-group"> 
         <label for="subject">Confirm Password</label> 
          <input class="form-control" name="cpassword" placeholder="Confirm Password" type="password"/> 
          <span class="text-danger"><?php echo form_error('cpassword'); ?></span> 
        </div> 

        <div class="form-group"> 
         <label for="subject">Profile Picture:</label> 
          <input class="form-control" name="picture" accept="image/*" type="file"/> 
          <span class="text-danger"><?php echo form_error('picture'); ?></span> 
        </div> 

        <div class="form-group"> 
         <button name="submit" type="submit" class="btn btn-info">Signup</button> 
         <button name="cancel" type="reset" class="btn btn-info">Cancel</button> 
        </div> 

      <?php echo form_close(); ?> 
     </div> 
    </div> 

Antwort

0

entfernen von Gültigkeitsprüfung erforderlich, da es nicht erlaubt ist, in Bildfeld zu übergeben, wenn Sie leere Datei Feld überprüfen (! empty ($ _ FILES [ ‚Bild‘ ] ['name']) dann benötigt va lidation ist bereits in diesem Bereich aktiviert. Zweitens müssen Sie überprüfen, ob das Verzeichnis erstellt wurde oder nicht, und 777 eine Berechtigung erteilen. Ich habe Code getestet, indem ich nur diese beiden Prüfungen hinzugefügt habe. Hoffe, es hilft

$this->form_validation->set_rules('picture', 'Image', 'trim'); /*Change in this line -- remove required*/ 
     if ($this->form_validation->run()) { 
      if (!empty($_FILES['picture']['name'])) { 
       $config['upload_path'] = 'uploads/images/'; 
       /*add 777 permission to directory*/ 
       if (!is_dir($config['upload_path'])) { 
        mkdir($config['upload_path'], 0777, TRUE); 
       } 
       $config['allowed_types'] = 'jpg|jpeg|png|gif'; 
       $config['max_size'] = 10000000; 
       $config['file_name'] = $_FILES['picture']['name']; 

       //Load upload library and initialize configuration 
       $this->load->library('upload', $config); 
       $this->upload->initialize($config); 

       if ($this->upload->do_upload('picture')) { 
        $uploadData = $this->upload->data(); 
        $picture = $uploadData['file_name']; 
       } else { 
        $picture = ''; 
        $error = array('error' => $this->upload->display_errors()); 
        echo "<script>alert('JPG, JPEG, PNG and GIF type of file only is allowed and atleast 10MB of size');window.location = '" . base_url("index.php/signup") . "';</script>"; 
       } 
      } else { 
       $picture = ''; 
      } 
      $data = array(
       'image' => $picture 
      ); 

      $this->write_conn->db->insert('test', $data); 
      if ($this->write_conn->db->insert('test', $data)) { 
       $this->session->set_flashdata('msg', '<div class="alert alert-success text-center">You are successfully registered! Please login to access your profile!</div>'); 
      } else { 
       // error 
       $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Oops! Error. Please try again later!!!</div>'); 
      } 
     } 
+0

Ich kann jetzt Bild in den Speicherort und auch die Daten in Tblaccount hochladen. Mein Problem ist jetzt der Upload-Button kann alles wie Docs hochladen. Und was ist die Validierung dafür, wenn es leer ist? Vielen Dank. –

+0

Entschuldigung für die späte Antwort, da ich in der Konfiguration eingecheckt habe, sind die erlaubten Typen jpg | jpeg | png | gif also nur diese Dateien werden nichts anderes hochgeladen und validiert auch wenn Bilder hochgeladen werden, wenn es nicht leer ist! Leer ($ _ FILES [' picture '] [' name ']. Sie können entweder durch jquery überprüfen oder in einer anderen Bedingung dem Benutzer den Fehler geben, dass er nicht leer ist. – aishwarya

0

Auf dem Upload Pfad

$config['upload_path'] = 'uploads/images/'; 

Versuchen

$config['upload_path'] = './uploads/images/'; 
$config['upload_path'] = FCPATH . '/uploads/images/'; 

Und ich form_open_multipart() Form helper sicher richtigen Berechtigungen

Auf einer anderen Anmerkung sollten Sie sich Ihre Ordner machen benannt haben Sie Ihre Datei und Klassennamen richtig, wo signup.phpSignup.php Nur der erste sein würde, Schreiben soll auf Klasse groß geschrieben werden und die Dateinamen erklärten hier https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming

<?php 

class Signup extends CI_Controller { 

} 
Verwandte Themen