2010-05-11 5 views
1

Voici mon script que j'utilise pour télécharger différents fichiers. Toutes les solutions que j'ai trouvées ne traitent que de plusieurs téléchargements d'images. Je suis totalement perplexe pour une solution à ce sujet. Quelqu'un peut-il me dire ce que je suis censé faire pour télécharger différents fichiers sous le même format? MerciProblèmes de téléchargement de différents types de fichiers dans codeigniter

function do_upload() 
{ 
    $config['upload_path'] = './uploads/nav'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '2000'; 

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

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

     return $error; 
    } 
    else 
    { 

     $soundfig['upload_path'] = './uploads/nav'; 
     $soundfig['allowed_types'] = 'mp3|wav'; 

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

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

      return $error; 
     } 
     else 
     { 

      $data = $this->upload->data('userfile'); 
      $sound = $this->upload->data('soundfile'); 
      $full_path = 'uploads/nav/' . $data['file_name']; 
      $sound_path = 'uploads/nav/' . $sound['file_name']; 

      if($this->input->post('active') == '1'){ 
       $active = '1'; 
      }else{ 
       $active = '0'; 
      } 

      $spam = array(
       'image_url' => $full_path, 
       'sound' => $sound_path, 
       'active' => $active, 
       'url' => $this->input->post('url') 
      ); 

      $id = $this->input->post('id'); 

      $this->db->where('id', $id); 
      $this->db->update('NavItemData', $spam); 

      return true; 
     }  
    } 
} 

Voici ma forme:

<?php echo form_open_multipart('upload/do_upload');?> 
<?php if(isset($buttons)) : foreach($buttons as $row) : ?> 
<h2><?php echo $row->name; ?></h2> 
<input type="file" name="userfile" size="20" /><br /> 
<input type="file" name="soundfile" size="20" /> 
<input type="hidden" name="oldfile" value="<?php echo $row->image_url; ?>" /> 
<input type="hidden" name="id" value="<?php echo $row->id; ?>" /> 

<br /><br /> 
<label>Url: </label><input type="text" name="url" value="<?php echo $row->url; ?>" /><br /> 
<input type="checkbox" name="active" value="1" <?php if($row->active == '1') { echo 'checked'; } ?> /><br /><br /> 
<input type="submit" value="submit" /> 

</form> 

<?php endforeach; ?> 
<?php endif; ?> 

Répondre

0

simplement supprimer la ligne $config['allowed_types'] de votre code si vous voulez télécharger tous les types de fichiers ou d'utiliser ce tableau pour spécifier les types de fichiers que vous souhaitez télécharger par exemple:

$config['allowed_types'] = 'gif|jpg|png|bmp|etc'; 
+1

je voudrais garder la validation en place que les utilisateurs ont tendance à être des idiots! N'y a-t-il pas moyen d'utiliser deux configs différentes à la fois? Bravo si :) – Drew

0

Ce code peut vous aider: -

 <select name="file_provider2"> 
      <option value="singa">Singapore</option> 
     </select> 
      <input type="file" name="singafile" id="singafile"> 

     <select name="file_provider1"> 
      <option value="usa">USA</option> 
     </select> 
      <input type="file" name="usafile" id="usafile"> 

Controller: -

if($this->input->post("file_provider1")=="usa"){ 
       if ($_FILES['usafile']['size'] > 0){ 
       $file = $_FILES['usafile']['tmp_name']; 
       //all code goes here for first file 
    } 
} 
if($this->input->post("file_provider2")=="singa"){ 
       if ($_FILES['usafile']['size'] > 0){ 
       $file = $_FILES['singafile']['tmp_name']; 
       //all code goes here for 2nd file 
    } 
} 
Questions connexes