2012-11-08 11 views
6

Ciao Ho qualche problema con la parte del file di caricamento. Beh, in pratica ho un modulo con la parte di caricamento del logo in cui, se un utente non seleziona un logo, può ancora aggiornare il suo profilo, allo stesso tempo l'utente può anche scegliere di caricare un logo ma ha alcune limitazioni. Ora non so come posso convalidare quella parte per sapere se lui/lei sceglie o meno un'immagine. Ecco il mio codice finora nel controller CI:Convalida se un file è stato selezionato per il caricamento in codeigniter

if (//CHECK IF THERE IS A FILE FOR UPLOAD){ 
       $new_name = $data['id']; 

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

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

        if (! $this->upload->do_upload()) 
        { 
         array_push($data['error_message'], "You have the following errors in your entry:\n"); 
         array_push($data['error_message'], "- Logo must be 100x100 pixels in size not exceeding 100KB with JPG,PNG or GIF format"); 
         array_push($data['error_message'], "\nLogo upload failed."); 
         $data['check_error'] = true; 
        } 
        else 
        { 
         $data = array('upload_data' => $this->upload->data()); 

         //DO UPDATE PART HERE 
         $file = $data['upload_data']['file_name']; 
         rename($config['upload_path'] . $file, $config['upload_path'] .$new_name.'.jpg'); 
         //GO TO SETTINGS 
         $this->load->helper('url'); 
         redirect($data['base'].'settings'); 
        } 
       } 

La parte in se è dove volevo impostare una convalida. Ho provato alcuni trucchi ma tutti questi non funzionano correttamente.

Ecco mio punto di vista parte in cui, se il logo del certo ID già esiste è solo mostrare la sua/il suo logo o altro visualizza il logo di default:

<tr> 
    <td><p class="titles">Logo</p></td> 
    <td> 
    <div> 
     <input type="text" id="fileName" class="file_input_textbox" readonly="readonly"> 

     <div class="file_input_div"> 
      <input type="button" value="Browse" class="file_input_button" /> 
      <input type="file" class="file_input_hidden" onchange="javascript: document.getElementById('fileName').value = this.value" id="upload" name="userfile" /> 
     </div> 
    </div> 
    </td> 
</tr> 

<tr> 
<td> 
</td> 
<td> 
<p class="titles">100px x 100px jpg, png or gif only.</p> 
</td> 
</tr> 

<tr> 
<td><p class="titles">Current Logo</p></td> 
<td> 
    <img src="<?php if(is_array(@getimagesize($base."Logos/".$id.".jpg"))){echo $base."Logos/".$id.".jpg";}else{echo $base."Logos/default.jpg";} ?>" style="margin:0px 0px 0px 90px;"/> 
</td> 
</tr> 

risposta

13

Io di solito ottenere PHP nativo per verificare se il file è caricato prima di ottenere classe di upload di CI per fare il lavoro:

if (isset($_FILES['upload_field_name']) && is_uploaded_file($_FILES['upload_field_name']['tmp_name'])) { 
    //load upload class with the config, etc... 
    $this->load->library('upload', $config); 
} 
+0

ho già provato l'isset ($ _ FILES [ 'upload_field_name']), ma non più tardi. proveremo questo e torneremo su di voi al più presto. Grazie! :) – KaHeL

Problemi correlati