2017-06-24 10 views
1

Ich erhalte eine Fehlermeldung You did not select a file to upload. beim Versuch, eine Datei hochzuladen, obwohl ich eine Datei zum Hochladen ausgewählt habe. Ich verwende eine Eingabedatei, die mit Bootstrap formatiert wurde. Ist das Problem damit? Ich habe die Anweisungen im Codeigniter-Benutzerhandbuch für Datei-Uploads befolgt. Kann mir bitte jemand helfen und den Fehler in meinem Code erkennen?Hochladen einer Datei in Codezeichen

Danke

-Controller

public function create() 
{ 
    $config['upload_path']   = './uploads/'; 
    $config['allowed_types']  = 'gif|jpg|png'; 

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

    if (! $this->upload->do_upload('userfile')) 
    { 
      echo "Upload failed"; 
    } 
    else 
    { 
      $data = array('upload_data' => $this->upload->data()); 

    } 

    $data = array(
     'category' => $this->input->post('category'); 
     'name' => $this->input->post('recipename'), 
     'ingredients' => $this->input->post('ingredients'), 
     'directions' => $this->input->post('directions'), 
     'date' => date("Y/m/d") 

    ); 

    $this->model->insert($data); 
    redirect('', 'refresh'); 
} 

Ansicht

<form action="<?php echo base_url();?>home/create" method="POST" role="form" multipart> 
     <legend>New Recipe</legend> 

     <div class="form-group"> 
      <label for="">Category</label> 

      <select name="category" id="input" class="form-control"> 
       <?php foreach ($category as $value) {?> 
       <option value="<?php echo $value->category; ?>"><?php echo $value->category;?></option> 
       <?php } ?> 

      </select> 


      <label>Name</label> 
      <input type="text" name="recipename" class="form-control" id="" placeholder="Recipe Name"> 
      <label>Image</label> 
      <div class="input-group"> 
       <label class="input-group-btn"> 
        <span class="btn btn-primary"> 
         Browse&hellip; <input type="file" name="userfile" style="display: none;" multiple> 
        </span> 
       </label> 
       <input type="text" class="form-control" readonly> 
      </div> 
      <label>Ingredients</label> 
      <textarea name="ingredients" id="input" class="form-control" required="required"></textarea> 
      <label>Directions</label> 
      <textarea name="directions" id="input" class="form-control" required="required"></textarea> 

     </div> 



     <button type="submit" class="btn btn-primary">Submit</button> 
     </form> 

<script type="text/javascript"> 


    $(function() { 

     // We can attach the `fileselect` event to all file inputs on the page 
     $(document).on('change', ':file', function() { 
     var input = $(this), 
      numFiles = input.get(0).files ? input.get(0).files.length : 1, 
      label = input.val().replace(/\\/g, '/').replace(/.*\//, ''); 
     input.trigger('fileselect', [numFiles, label]); 
     }); 

     // We can watch for our custom `fileselect` event like this 
     $(document).ready(function() { 
      $(':file').on('fileselect', function(event, numFiles, label) { 

       var input = $(this).parents('.input-group').find(':text'), 
        log = numFiles > 1 ? numFiles + ' files selected' : label; 

       if(input.length) { 
        input.val(log); 
       } else { 
        if(log) alert(log); 
       } 

      }); 
     }); 

    }); 
</script> 
+0

laden Sie Datei über Ajax? –

+0

Nein, bin ich nicht. Ich benutze nur PHP. – Beldion

+0

@Beldion Fügen Sie das entsprechende Formularattribut 'enctype =" multipart/form-data "' zu View hinzu. zusätzlich, Eingabe-Datei-Element hat mehrere Dateien ausgewählt, aber in Ihrem Controller wird nicht unterstützt mehrere Datei-Upload überprüfen Sie dies, um Ihnen [link] (https://stackoverflow.com/a/20138535/5589166) – Sovary

Antwort

3

Verwendung enctype in Tag Ihres HTML-Formulars.

<form action="<?php echo base_url();?>home/create" method="POST" role="form" enctype="multipart/form-data" > 

jetzt versuchen. es funktioniert. :)

+0

Es zeigt eine andere Fehler jetzt, es heißt 'Der Upload-Pfad scheint nicht gültig zu sein ' – Beldion

+0

jetzt Ihre Datei erreicht den Controller, aber es kann nicht finden Sie Ihr Verzeichnis, um es zu speichern. https://stackoverflow.com/questions/6159851/uploading-an-image-in-codeigeiter-shows-error-the-upload-path-does-not-appear-to –