2009-07-23 12 views
0

Je sais qu'il existe de nombreux tutoriels en ligne, mais je ne pouvais pas les faire travailler :(peut-être quelque chose de particulièrement mal avec mon système:/upload photo avec codeigniter

Mon contrôleur localpath est: /localhost/rl/applications/backend/contrôleur/

Controller:

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

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

    if (! $this->upload->do_upload()) 
    { 
     $error = array('error' => $this->upload->display_errors()); 

     $this->load->view('add_image', $error); 
    } 
    else 
    { 
     $data = array('upload_data' => $this->upload->data()); 

     $data['id'] = $this->input->post['id_work']; 
     $this->load->view('add_image', $data); 
    } 

} 

My View localpath est: /localhost/rl/applications/backend/view/

Vue:

echo form_open_multipart('do_upload'); 
    <ul class="frm"> 
     <li><label>File: *</label><input type="file" name="userfile" class="frmlmnt" size="50" /></li>  
     <li><label></label><input type="submit" class="btn" value="Upload" /></li> 
    </ul> 
</form>   

Peut-être que je fais quelque chose de mal avec le chemin

Répondre

0

Je ne sais pas ce que CodeIgniter est, mais je vois trois choses tout de suite:

  1. Votre fonction doesn N'y a rien passé. Je ne suis pas sûr si la variable "this" gère cela, mais peut-être que vous devriez lui transmettre l'URL de téléchargement?

  2. Vous avez config ['size'] défini sur '100'. Je peux seulement deviner que la taille fait référence à la taille de fichier, mais est-ce que cette extension que vous utilisez par défaut est KB ou MB?

  3. Vous avez ce bit:

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

et ce bit:

$data = array('upload_data' => $this->upload->data()); 

$data['id'] = $this->input->post['id_work']; 
$this->load->view('add_image', $data); 

Quelle partie est en train de faire le téléchargement? Si c'est le premier, comment sait-il quoi télécharger? Je ne vois pas que dans aucun des choix de configuration, et imaginez « upload » est pas l'adresse du fichier ...

Si c'est la deuxième partie, vous l'avez mis à

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

Mais pourquoi voudriez-vous le voir? Vous ne le téléchargez pas? Je suppose que cette vue est ce qui le télécharge, mais vous utilisez la même méthode pour les erreurs dans la partie précédente.

+1

Quelques réponses au cas où d'autres trouveraient cette question: Ce code vient directement de http://codeigniter.com/user_guide/libraries/file_uploading.html 1. C'est une fonction à l'intérieur d'un contrôleur CodeIgniter (CI), donc tout est passé par le framework. 3. $ this-> upload-> do_upload() à l'intérieur de l'instruction if fait le téléchargement réel. upload_data() renvoie simplement les détails de ce téléchargement. Donc, quand il envoie des données $ à la vue, il ne regarde pas le téléchargement réel, il regarde seulement les détails. – jimyi

1

Changez votre vue

echo form_open_multipart('backend/controllername/do_upload'); 

et créer un dossier de back-end dans le dossier contrôleurs.