2010-07-19 8 views
6

Je suis sûr que c'est simple mais je ne vois pas comment faire pour télécharger un fichier avec CI optionnel.téléchargement de fichier codeigniter - facultatif?

Si vous laissez la zone de saisie de fichier vide, l'erreur "Vous n'avez pas choisi de fichier de téléchargement" s'affiche.

La raison pour laquelle je veux que ce soit optionnel est que mon formulaire édite une liste de type de répertoire, et je n'ai pas besoin de télécharger l'image chaque fois que je modifie la liste.

est-il un moyen de supprimer le « nécessaire » erreur de manipulation de la classe de fichiers

Répondre

13

Utilisez les éléments suivants:

<?php if ($_FILES AND $_FILES['field_name']['name']) 
{ 
    // Upload the file 
} 
+4

l'utiliser où? pourquoi est-il si difficile de taper un peu plus pour expliquer où ça va ... – serdarsenay

+0

Je suis sûr que dans le contrôleur, avant que les téléchargeurs de codeigniters est appelé. – Kyslik

2

fichier CodeIgniter télécharger en option ... fonctionne parfaitement .... . :)

---------- contrôleur ---------

function file() 
{ 
$this->load->view('includes/template', $data); 
} 

function valid_file() 
{ 
$this->form_validation->set_rules('userfile', 'File', 'trim|xss_clean'); 

if ($this->form_validation->run()==FALSE) 
{ 
    $this->file(); 
} 
else 
{ 
    $config['upload_path'] = './documents/'; 
    $config['allowed_types'] = 'gif|jpg|png|docx|doc|txt|rtf'; 
    $config['max_size']  = '1000'; 
    $config['max_width']  = '1024'; 
    $config['max_height'] = '768'; 

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

    if (!$this->upload->do_upload('userfile',FALSE)) 
    { 
    $this->form_validation->set_message('checkdoc', $data['error'] = $this->upload->display_errors()); 

    if($_FILES['userfile']['error'] != 4) 
    { 
     return false; 
    } 

    } 
    else 
    { 
    return true; 
    } 
} 

je viens d'utiliser ces lignes ce qui en fait le cas échéant,

if($_FILES['userfile']['error'] != 4) 
{ 
return false; 
} 

$_FILES['userfile']['error'] != 4 is for file required to upload. 

vous pouvez u rendre unneccessory en utilisant $_FILES['userfile']['error'] != 4, il passera cette erreur pour le fichier requis et fonctionne très bien avec d'autres types d'erreurs le cas échéant en utilisant return false, espérons que cela fonctionne pour u ....

+2

Pouvez-vous expliquer la signification de '4' et d'où vous l'avez obtenu? – Sparky

0

Utilisez ce code dans le contrôleur avant d'appeler do_upload()

if (is_uploaded_file($_FILES['field_name']['tmp_name'])) { 
    // your code here 
}