2016-09-03 9 views
-2

Quelle autorisation de fichier dois-je utiliser pour charger et télécharger des fichiers dans un dossier dans codeigniter?ERREUR: le dossier de destination du téléchargement ne semble pas accessible en écriture

Mon projet entier a été hébergé sur FileZilla. REMARQUE: Le téléchargement de téléchargement fonctionne parfaitement lorsque le site Web est hébergé de façon loal.

Une erreur se produit uniquement lors de l'hébergement via FileZilla. Mon dossier de téléchargement/téléchargement est présent dans le répertoire racine de codeigniter (répertoire où le dossier d'application est présent).

Télécharger Controller code

public function do_upload(){ 
$rti_details['rtino'] = $this->input->post("rtino"); 

    $rtino_result = $this->rti_model->get_rti_details_by_rtino($rti_details['rtino']); 
    if(!$rtino_result){ 

     $upload=$this->upload_file('rtifile',$this->input->post('rtino')); 
      if($upload) 
      { 
       $data = array('rti_no'=>$this->input->post('rtino'), 
          'filer_name'=>$this->input->post('filername'), 
          'filer_add'=>$this->input->post('fileradd'), 
          'city'=>$this->input->post('city'), 
          'state'=>$this->input->post('state'), 
          'pin_code'=>$this->input->post('pin_code'), 
          'rti_cat'=>$this->input->post('rti_cat'), 
          'rti_file'=>$upload['full_path'], 
          'filed_on'=>$this->input->post('filedon') 
         ); 

      $this->rti_model->insert_rti($data); 
      } 

     $result = true; 
    } 
    else 
     $result = false; 

    if($result) 
     $this->session->set_flashdata("flashSuccess","RTI added successfully"); 
    else 
     $this->session->set_flashdata("flashError","Error in adding RTI. This RTI Number Already Exist."); 

    redirect("rti/rti_file"); 

}

private function upload_file($name ='',$sno = 0) 
{ 
    if($name=='rtifile'){ $config['upload_path'] = 'assets/rti_uploads/rti_file/'; } 
    if($name=='coverletter'){ $config['upload_path'] = 'assets/rti_uploads/cover_letter/'; } 
    if($name=='fullreply'){ $config['upload_path'] = 'assets/rti_uploads/full_reply/'; } 
    $config['allowed_types'] = 'pdf'; 
    $config['max_size'] = '2050'; 


     if(isset($_FILES[$name]['name'])) 
     { 
      if($_FILES[$name]['name'] == "") 
       $filename = ""; 
      else 
      { 
       $filename=$this->security->sanitize_filename(strtolower($_FILES[$name]['name'])); 
       $ext = strrchr($filename, '.'); 
       if($name=='rtifile'){ $filename='RTI_'.$sno.'_'.date('YmdHis').$ext; } 
       if($name=='coverletter'){ $filename='COVER_'.$sno.'_'.date('YmdHis').$ext; } 
       if($name=='fullreply'){ $filename='FULLREPLY_'.$sno.'_'.date('YmdHis').$ext; } 
      } 
     } 
     else 
     { 
      $this->session->set_flashdata('flashError','ERROR: File Name not set.'); 
      redirect('rti/rti_file'); 
      return FALSE; 
     } 

     $config['file_name'] = $filename; 

     if(!is_dir($config['upload_path'])) 
     { 
      mkdir($config['upload_path'],0777,TRUE); 
     } 

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

     if (! $this->upload->do_upload($name)) 
     { 
      $this->session->set_flashdata('flashError',$this->upload->display_errors('','')); 
      redirect('rti/rti_file'); 
      return FALSE; 
     } 
     else 
     { 
      $upload_data = $this->upload->data(); 
      return $upload_data; 
     } 
} 
+0

Pour les répertoires publics '' 755' ou 0755' pour les fichiers publics '' 644' ou 0644'. Cochez [this] (https://forums.cpanel.net/threads/why-are-644-and-755-unix-permissions-ideal-for-files-directories-in-public-folders.136821/) rubrique. – Tpojka

+0

Veuillez ajouter le code du contrôleur de téléchargement à votre question qu'il est difficile de deviner. J'ai également suivi https://codeigniter.com/userguide3/general/styleguide.html#file-naming – user4419336

Répondre

2

De la documentation:

You’ll need a destination directory for your uploaded images. Create a directory at the root of your CodeIgniter installation called uploads and set its file permissions to 777.

http://www.codeigniter.com/user_guide/libraries/file_uploading.html#the-upload-directory

Meilleurs voeux,

Paul

+0

J'ai déjà le répertoire à la racine de mon installation CodeIgniter, où les fichiers sont normalement téléchargés et téléchargés uniquement lorsque le site web est hébergé localement. Mais quand je l'héberge sur FileZilla l'erreur ci-dessus se produit. – hellokuldeep

+0

Aussi 777 n'est pas sécurisé à utiliser. – hellokuldeep

+0

Eh bien, vous devrez donner plus de détails. Vous dites "L'Erreur" mais quelle erreur? Vous n'avez jamais dit dans votre OP. Vous avez impliqué qu'il s'agissait d'une erreur d'autorisation, donc vous commencez avec 777 et testez. Si cela fonctionne, passez à 755. Et oui, vous utilisez toujours les autorisations les plus faibles possibles en production. Où votre dossier App est, n'est pas nécessairement votre racine, en fait, dans la production, vous devez déplacer votre répertoire App au-dessus de l'accès public. – PaulD