2017-10-20 38 views
-1

J'ai créé le répertoire racine et définir son chemin, j'ai fait le front comme l'était. l'ide ne donne pas d'erreur mais quand je continue, je dis que vous n'avez sélectionné aucune image.le téléchargement du fichier ne fonctionne pas dans codeigniter 3 erreur: vous n'avez sélectionné aucun fichier

le code du contrôleur:

class Images extends MY_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    function index() 
    { 
     $this->data['displayname'] = $this->admin->lastname; 
     $this->data['images'] = Image::all(); 
     $this->data['btn'] = 'Save'; 
     $this->data['content'] = 'admin/images/index'; 
     $this->load->view('layouts/admin', $this->data); 

    } 
    public function do_upload() { 
     $config['upload_path'] = './uploads/'; 
     $config['allowed_types'] = '*'; 
     //$config['max_size']  = 100; 
     //$config['max_width']  = 1024; 
     //$config['max_height'] = 768; 
     $this->load->library('upload', $config); 

     if (! $this->upload->do_upload('images')) 
     { 
      $error = array('error' => $this->upload->display_errors()); 
      // echo $this->upload->display_errors(); 
      $this->load->view('index', $error); 
     } 
     else 
     { 
      $data = array('upload_data' => $this->upload->data()); 

      $this->load->view('upload_success', $data); 
     } 

    } 
} 

le code de la vue: c'est la forme pour choisir le fichier

<?= form_open('admin/images/do_upload') ?> 
      <label><?= form_upload('images[]')?></label> 
      <div class="input-group-btn"> 
       <button class="btn btn-success add-image" type="button"><i class="glyphicon glyphicon-plus"></i> Add</button> 
      </div> 
     </div> 

    </ul> 

    <div class="line"></div> 

<?= form_submit('', 'Submit', 'class="publish-btn"') ?> 

<?= form_close()?> 
+0

bibliothèque télécharger CodeIgniter est construit pour un téléchargement à la fois – user4419336

Répondre

0

bien après beaucoup de recherches et d'essayer beaucoup de codes et je résolu mon problème est ici la chose complète le code du contrôleur:

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

     $this->upload->initialize($config); 
     $package = Package::find($id); 

     $files = $_FILES; 
     $cpt = count($_FILES ['images'] ['name']); 

     for ($i = 0; $i < $cpt; $i++) { 

      $_FILES ['images'] ['name'] = $files ['images'] ['name'] [$i]; 
      $_FILES ['images'] ['type'] = $files ['images'] ['type'] [$i]; 
      $_FILES ['images'] ['tmp_name'] = $files ['images'] ['tmp_name'] [$i]; 
      $_FILES ['images'] ['error'] = $files ['images'] ['error'] [$i]; 
      $_FILES ['images'] ['size'] = $files ['images'] ['size'] [$i]; 
      if ($this->upload->do_upload('images')){ 
       $upload_data = $this->upload->data(); 
       $file_name = $upload_data['file_name']; 
       $package->create_images(array('image_location' => $file_name)); 
      } 
     } 

     redirect('admin/packages/'); 
    } 
} 

le code de la vue:

<div class="container"> 
    <?= form_open_multipart('admin/images/create/' . $this->uri->segment(4)) ?> 
    <div class="row"> 
     <div class="col-md-8 publish"> 
      <h4>Image Gallery</h4> 
      <div class="line"></div> 
      <ul> 
       <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script> 



        <div class="input-group control-group after-add-image"> 


         <label><input type="file" name="images[]"></label> 

         <div class="input-group-btn"> 
          <button class="btn btn-success add-image" type="button"><i class="glyphicon glyphicon-plus"></i> Add</button> 
         </div> 
        </div> 

       </ul> 

       <div class="line"></div> 

      <?= form_submit('', 'Submit', 'class="publish-btn"') ?> 

      <?= form_close()?> 
      <div class="clear-all"></div> 
      <!-- Copy Fields-These are the fields which we get through jquery and then add after the above input,--> 
      <div class="copy-field" style="display: none"> 
       <div class="control-group input-group" style="margin-top:10px"> 
        <label><label><input type="file" name="images[]"></label></label> 
        <div class="input-group-btn"> 
         <button class="btn btn-danger delete" type="button"><i class="glyphicon glyphicon-delete"></i> Remove</button> 
        </div> 
       </div> 
      </div> 
      <script type="text/javascript"> 
       $(document).ready(function() { 

        //here first get the contents of the div with name class copy-fields and add it to after "after-add-more" div class. 
        $(".add-image").click(function(){ 
         var html = $(".copy-field").html(); 
         $(".after-add-image").after(html); 
        }); 
//here it will remove the current value of the remove button which has been pressed 
        $("body").on("click",".delete",function(){ 
         $(this).parents(".control-group").remove(); 
        }); 

       }); 
      </script> 

ça devient toutes les images dynamiquement, les télécharger dans le répertoire, puis stocke le chemin d'accès à la base de données fait!

the image for front end

0

En cas de téléchargement de fichiers, vous devez utiliser

<?php form_open_multipart('admin/images/do_upload') ?> 

Non ce

<?php form_open('admin/images/do_upload') ?> 
+0

il est en train de charger pas l'image –

+0

dit le chemin de téléchargement ne semble valide –

+0

problème résolu pour télécharger le fichier. le problème est dans le fichier de vue pas le contrôleur. le formulaire ne répond pas à la fonction parce que j'utilisais ceci: un tableau de fichiers parce que je vais soumettre plusieurs images. cela a fonctionné quand j'ai utilisé: un seul fichier. mais je suis nécessaire de soumettre plusieurs images en même temps. que dois-je faire pour surmonter ce problème, parce que j'ai déjà essayé le mécanisme de tableau et son ne fonctionne pas. –

1
<?= form_open_multipart('admin/images/do_upload') ?> 

utiliser le code ci-dessus au lieu d'

<?= form_open('admin/images/do_upload') ?> 
0

i ajouté le multipartie à ma forme qui crée un problème de chemin d'accès invalide qui i résolu par l'initialisation de la bibliothèque après avoir ajouté

$this->upload->initialize($config); 

après cette ligne de chargement de la bibliothèque.

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

d'abord charger la bibliothèque puis initialiser. mais toujours le problème d'une sélection n'est pas résolu J'ai aussi essayé quelques autres codes.